[MFC] 윈도우 프로그래밍 기초 - 대화 상자 실습
이번 글에서는 이전에 소개한 대화 상자 글을 바탕으로 실제 대화 상자를 구현하는 방법에 대해 소개하겠습니다.
1. 실습 주제) MFCModal 창 만들어 보기
|
동작 전 결과 |
|
동작 후 결과 |
1-1. BITMAP 리소스 추가
리소스 추가(A) 클릭
새로 만들기(N) 클릭
->참고로 "가져오기" 하셔도 됩니다.
전 이렇게 그렸습니다.
이번에 그린 그림의 이름(ID)은 IDB_EARTH로 하겠습니다.
1-2. 컨트롤 박스 배치하기
|
컨트롤 꾸며보기 - 이 부분은 여러분이 도구상자 탭을 이용하여 직접 하셔야 합니다. |
컨트롤 |
ID |
Caption |
Image |
Type |
Dialog |
IDD_MFCMODAL_DIALOG |
|
|
|
Edit Box |
IDC_INPUT_NAME |
|
|
|
Edit Box |
IDC_INPUT_SCHOOL |
|
|
|
Edit Box |
IDC_INPUT_DEPT |
|
|
|
Edit Box |
IDC_INPUT_GRAD |
|
|
|
Static |
IDC_STATIC |
이름 |
|
|
Static |
IDC_STATIC |
학교 |
|
|
Static |
IDC_STATIC |
학과 |
|
|
Static |
IDC_STATIC |
학년 |
|
|
Picture Control |
IDC_INPUT_IMAGE |
|
IDC_EARTH |
Bitmap |
Edit Box |
IDC_OUTPUT_NAME |
|
|
|
Edit Box |
IDC_OUTPUT_SCHOOL |
|
|
|
Edit Box |
IDC_OUTPUT_DEPT |
|
|
|
Edit Box |
IDC_OUTPUT_GRAD |
|
|
|
Picture Control |
IDC_OUTPUT_IMAGE |
|
|
Bitmap |
Static |
IDC_STATIC |
이름 |
|
|
Static |
IDC_STATIC |
학교 |
|
|
Static |
IDC_STATIC |
학과 |
|
|
Static |
IDC_STATIC |
학년 |
|
|
Group Box |
IDC_STATIC |
최종입력결과 |
|
|
Button |
IDB_BTN_COMPLETE |
입력완료 |
|
|
리소스를 이처럼 편집해주시기 바랍니다.
1-3 변수 추가
하나를 대상으로 변수 추가 방법을 소개해드리겠습니다.
나머지는 여러분들이 아래의 테이블을 참고하여 만들어주시기 바랍니다.
변수 추가(B) 클릭
|
범주(T)를 Value로 변경 |
|
변수 형식 : CString, 변수 이름 : m_staticName 최대 문자수 : 20 |
마침을 클릭합니다.
변수 추가 후에 코드가 변동됩니다.
변동되는 코드는
MFCModalDlg.h와 MFCModalDlg.cpp입니다.
|
MFCModalDlg.h |
|
MFCModalDlg.cpp의 DoDataExchange() -> 여기에서 사용하는 역할을 간접적으로 학습하셨으면 합니다.
참고로 DDX와 DDV는 앞서 살펴보셨겠지만, 대화상자에서의 최대 문자 수와 같은 제약조건을 다루는 함수입니다.
|
이 예제에서 만들어야 할 멤버 변수 설정 값 테이블입니다.
첫 번째 예제를 통해 변수 하나는 만들었으므로 나머지에 대한 테이블을 소개하겠습니다.
컨트롤 ID |
변수 형식 |
범주 |
최대 문자 수 |
IDC_INPUT_SCHOOL |
CString m_staticSchool |
Value |
50 |
IDC_INPUT_DEPT |
CString m_staticDept |
Value |
20 |
IDC_INPUT_GRAD |
CString m_staticGrad |
Value |
5 |
IDC_OUTPUT_NAME |
CString m_strName |
Value |
20 |
IDC_OUTPUT_SCHOOL |
CString m_strSchool |
Value |
50 |
IDC_OUTPUT_DEPT |
CString m_strDept |
Value |
20 |
IDC_OUTPUT_GRAD |
CString m_strGrad |
Value |
5 |
IDC_OUTPUT_IMAGE |
CString m_strImage |
Control |
|
1-4. 이벤트 처리기 추가
입력완료 버튼에서 오른쪽 버튼을 클릭한 후 이벤트 처리기 추가(A)를 클릭합니다.
기본값으로 두가 추가 및 편집을 클릭합니다.
OnBnClickedBtnComplete( )라는 함수가 생성됩니다.
MFCModalDlg.h와 MFCModalDlg.cpp의 파일이 영향을 받게 됩니다.
어떻게 코드가 생성되었는지 확인해보겠습니다.
|
결과) afx_msg void OnBnClickedBtnComplete( )라는 함수가 추가되었습니다. |
|
결과) MFCModalDlg.cpp의 void CMFCModalDlg::OnBnClickedBtnComplete( )라는 함수 구현부가 완성되었습니다. |
1-5 기능 구현
UpdateData(TRUE); // UpdateData(TRUE)함수를 통해 데이터가 전송됩니다. m_strName = m_staticName;
MyImageView.LoadBitmap(IDB_EARTH); m_staticImage.SetBitmap(MyImageView);
UpdateData(FALSE); |
OnBnClickedBtnComplete( ) 구현 |
1-6. 동작해보기
'소프트웨어(SW) > MS - C++ (GUI) MFC' 카테고리의 다른 글
[MFC] 윈도우 프로그래밍 기초 - Trace (디버그 창 출력) (2) | 2015.03.21 |
---|---|
[MFC] 윈도우 프로그래밍 기초 - 리소스 문자열 제어 (2) | 2015.03.21 |
[MFC] 윈도우 프로그래밍 기초 - 대화 상자 만들기(이론) (4) | 2015.03.18 |
[MFC] 윈도우 프로그래밍 기초 - 컨트롤(Control) 소개 (2) | 2015.03.18 |
[MFC] 윈도우 프로그래밍 기초 - 대화 상자(Dialog) (2) | 2015.03.18 |