MFC

[MFC] EDIT Control 사용법

권벡터 2023. 7. 15. 02:10

다이얼로그 적용법

1. 도구 상자에서 'Edit Control' 를 클릭하고 중앙의 다이얼로그에 드래그 앤 드롭 한다. 

 

2. 생성된 'Edit Control' 를 클릭하고 속성 탭의 ID를 변경 (구분되도록 이름 짓자) 

필수적으로 ID를 바꿔야 하는 것은 아니다. 다만 규모가 큰 프로그램을 만들 때 혼동될 수 있으니 습관적으로 이름을 바꾸어 주도록 하자. 

 

Edit Control를 생성하고 'resource.h' 파일을 확인하면 아래 네모처럼 새로운 변수가 추가된 것을 볼 수 있다.

 

3. 'Edit Control' 를 선택하고 마우스 우측 클릭하여 '변수 추가' 메뉴 클릭

4. [범주: 컨트롤, 이름: 마음대로 ] 를 설정하고 '마침' 클릭

5.  [범주: 값, 이름: 마음대로 ] 를 설정하고 '마침' 클릭

 

변수 설정을 완료하고 내가 생성한 프로젝트 이름의 Dlg.h  파일을 확인해 보면 맨 아래쪽에 내가 추가한 변수가 보인다. 

 

생성한 프로젝트Dlg 헤더파일 사진

마찬가지로 내가 생성한 프로젝트 이름의 Dlg.cpp 파일을 확인해보면 DoDataExchange() 함수 내에 추가된 변수를 확인할 수 있다. 

생성한 프로젝트Dlg .cpp 파일 사진

 

입력 값을 변수에 저장 

런타임 환경에서 Edit Control 창에 값을 입력한 후 변수에 저장하는 방법은 여러가지이다. 

상황에 맞게 사용하면 될 것 같다. 

 

1. Control 변수에서 입력값 가져오기 

CEdit 자료형으로 생성된 변수를 통해서 입력값을 가져오는 방법은 아래와 같다.

// 생성한 MFC 프로젝트Dlg.cpp 파일

// Edit Control1 에서 값을 입력하고 버튼을 누르면 
// Edit Control2 에 입력값이 출력되도록 구현 

// 버튼 클릭 이벤트 함수 
void CMFCApplication1Dlg::OnBnClickedTestBtn()
{
// Edit Control1의 입력값을 'val_input_edit'에 저장한다.
	ctrl_input1_edit.GetWindowTextW(val_input1_edit);
// 저장된 'strText'를 EditControl2 에 출력시킨다. 
	ctrl_input2_edit.SetWindowTextW(val_input1_edit);
}

2. ID 이름을 통해 입력값 가져오기

앞에서 설명한 'resource.h' 파일에 정의된 ID 이름을 통해서 입력값을 가져오는 방법은 아래와 같다. 

// 생성한 MFC 프로젝트Dlg.cpp 파일

// Edit Control에 값을 입력하고 버튼을 누르면 입력값이 IDC_INPUT1_EDIT 의 value 변수에 저장되고,
// 저장된 변수를 메세지 박스에 넣어 팝업으로 출력되도록 만들었다.

void CMFCApplication1Dlg::OnBnClickedTestBtn()
{
	GetDlgItemText(IDC_INPUT1_EDIT,val_input1_edit);
	AfxMessageBox(val_input1_edit);
}

3. 이벤트 처리기를 통해 입력값 가져오기 

이 방법은 Edit Control에 값이 변경되면 수시로 변수에 입력값을 바꿔주는 방식이다. '이벤트 처리기' 메뉴의 메세지 유형은 'EN_CHANGE'를 사용했다.

 

 

클래스 목록 설정 확인을 잘하자.

// 생성한 MFC 프로젝트Dlg.cpp 파일

void CMFCApplication1Dlg::OnEnChangeInput1Edit()
{
	GetDlgItemText(IDC_INPUT1_EDIT, val_input1_edit);
}

 

다이얼로그에 값을 출력 

// 생성한 MFC 프로젝트Dlg.cpp 파일

BOOL CMFCApplication1Dlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // 시스템 메뉴 항목 관련 코드는 생략했다. 
    
    // 방법 1
    ctrl_input1_edit.SetWindowTestW(_T("아무말 대잔치"));
	
    // 방법 2 
    CString strText;
    strText = _T("주저리주저리");
    ctrl_input1_edit.SetWindowTestW(strText);
    
    //방법 3
    SetDlgItemTextW(IDC_INPUT1_EDIT, _T("주저리"));
    
return TRUE;  
}