프로그래밍 노트

MFC기초 에디트 컨트롤 조작 본문

MFC TIP

MFC기초 에디트 컨트롤 조작

띠리 2007. 7. 5. 20:57
VB랑 다르게MFC에서는 에디트 박스를 쓰는게 좀 귀찮다.

프로젝트를 MFC 응용프로그램으로 선택해서 만들고
응용 프로그램 종류에서 대화 상자 기반을 선택하여 프로젝트를 만든다.

프로젝트를 만든후, 리소스 뷰에서 Dialog 밑에 다이알로그 박스를 선택한다.
도구 상자에서 다이알로그에 에디트 컨트롤을 두개 만든다.

만든 에디트 컨트롤을 선택하여 속성창을 열어 ID를 변경한다.

솔루션 탐색기에서 자동으로 만들어진 헤더파일(EditBoxDlg.h : 프로젝트 명을 어떻게 주느냐에 따라 헤더 파일 이름이 달라진다.)에 에디트 컨트롤 변수를 public에 추가한다.

// EditBoxDlg.h : 헤더 파일

//


#pragma once



// CEditBoxDlg 대화 상자

class CEditBoxDlg : public CDialog

{

// 생성입니다.

public:

    CEditBoxDlg(CWnd* pParent = NULL);    // 표준 생성자입니다.


// 대화 상자 데이터입니다.

    enum { IDD = IDD_EDITBOX_DIALOG };


    protected:

    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 지원입니다.



// 구현입니다.

protected:

    HICON m_hIcon;


    // 생성된 메시지 맵 함수

    virtual BOOL OnInitDialog();

    afx_msg void OnPaint();

    afx_msg HCURSOR OnQueryDragIcon();

    DECLARE_MESSAGE_MAP()


public:

    CEdit    m_EditIn;

    CEdit    m_EditOut;


};


다이알로그 소스를 열어 DoDataExchange를 찾는다.

void CEditBoxDlg::DoDataExchange(CDataExchange* pDX)

{

    CDialog::DoDataExchange(pDX);


    DDX_Control(pDX, IDC_EDIT_IN, m_EditIn);

    DDX_Control(pDX, IDC_EDIT_OUT, m_EditOut);

}


이렇게 다이알로그 박스에 만든 에디트 컨트롤과
다이알로그의 CEdit 으로 정의한 맴버 변수를 관련지어준다.
이렇게 관련지어주면 에디트 컨트롤에 데이터를 넣고 빼기를 간단하게 할 수 있다.

리소스의 다이알로그에서 확인 버튼을 더블클릭하면
아래와 같이 void CEditBoxDlg::OnBnClickedOk() 함수가 만들어진다.
그 함수에 CEdit으로 정의한 변수를 쳐넣고(m_EditIn)
"."을 누르면 에디트 컨트롤의 프라퍼티가 표시되어진다.
GetWindowText는 에디트 컨트롤의 문자열을 문자열 파라미터에 대입시키고
SetWindowText는 문자열 파라미터의 값을 에디트 컨트롤에 표시한다.

void CEditBoxDlg::OnBnClickedOk()

{

    CString        strTest;


    // 에디트 컨트롤에 입력된 문자열을 CString에 대입

    m_EditIn.GetWindowText(strTest);


    // CString의 문자열을 에디트 컨트롤에 입력

    m_EditOut.SetWindowText(strTest);


    // 에디트 컨트롤에 문자열 입력

    m_EditIn.SetWindowText("");


    //OnOK();

}


이렇게  MFC에서는 좀 번거롭게
컨트롤과 리소스를 짝을 지어주어야만이 쓸수있다.
VB를 하던 사람이라면 정말 번거럽게만 느껴진다. ^^;



 

Comments