- 부모
다이얼로그 : IDD_MY0121_3_DIALOG
cpp : 0121_3Dlg.cpp
h : 0121_3Dlg.h
- 자식
다이얼로그 : IDD_DIALOG1
cpp : DIALOG1.cpp
h : DIALOG1.h
1. 부모 다이얼로그 창에서 아이콘 설정
(edit_Control 3개, button(모달) 1개) * edit_control 1, 2, 3 설정
2. 자식 다이얼로그 삽입(생성)
(edit_Control 3개, button(종료) 1개) 생성
* 부모 edit_control과 겹치지않게 ID를 변경해준다. 여기서는 4, 5, 6으로 설정
* 버튼 또한 중복이 되지 않게 여기서는 IDC_BUTTON2로 바꿔준다.
솔루션탐색기 -> Resource.h 파일을 열어보면 아래와 같이 정의 되어있다.
3. 자식 다이얼로그 상에서 클래스를 추가한다.
화면 우클릭 -> 클랙스 추가(CDIALOG1)... cpp와 h 앞에는 C를 빼준다(보통 rule)
DIALOG1.cpp, DIALOG1.h 파일 생성된 것을 확인할 수 있다.
4. 자식 다이얼로그(IDD_DIALOG1) 상에서 클래스 마법사 시작
Edit_control 우클릭 -> 클래스마법사시작 -> 가상함수-> OnInitDialog 함수 추가
OnInitDialog: 초기화 함수
자식 다이얼로그로 돌아가서 edit_control 우클릭 -> 클래스 마법사 시작
-> 멤버 변수에 들어간다 -> IDC_EDIT4를 클릭하고 변수 추가를 누른다
-> 범주를 값으로 바꾸고 이름을 e4, e5, e6로 바꿔준다. -> 적용, 확인
DIALOG1.h 파일에 가보면 Cstring형식으로 멤버변수 e4, e5, e6으로 만들어진것을 확인할 수 있다.
5. 0121_3Dlg.cpp 파일로 돌아와서 OnInitDialog() 함수 안에 아래 코드를 입력시켜주고 컴파일한다.
SetDlgItemInt(IDC_EDIT1, 10);
SetDlgItemInt(IDC_EDIT2, 20);
10, 20으로 초기화가 된것을 확인할 수 있다.
6. 부모 다이얼로그에서 버튼 함수(OnBnClickedButton1())를 출력하여 아래와 같이 작성한다.
#include "Dialog1.h"
void CMy01213Dlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CDIALOG1 Dialog1;
GetDlgItemTextW(IDC_EDIT1, Dialog1.e4);
GetDlgItemTextW(IDC_EDIT2, Dialog1.e5);
if (Dialog1.DoModal() == IDOK) {
}
}
7. 자식 다이얼로그에서 버튼(BUTTON3)을 하나 더 만든다.
void CDIALOG1::OnBnClickedButton3()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
e4 = L"100";
e5 = L"200";
//FALSE : 변수에 있는 값을 컨트롤로 보낸다.
UpdateData(FALSE); // 갱신시켜주는 함수
}
![]() |
![]() |
8. 자식 다이얼로그에서 버튼(BUTTON4)을 하나 더 만든다.
OnBnClickedButton4()
Edit_control에 있는 변수를 메세지로 띄울 수 있다.
void CDIALOG1::OnBnClickedButton4()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
//TRUE: 컨트롤에 있는 값을 변수로 보낸다.
UpdateData(TRUE);
MessageBox(e4 + " " + e5, MB_OK); //문자열 연결
}
9. Edit_control 값들의 합을 출력한다
void CDIALOG1::OnBnClickedButton4()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
//TRUE: 컨트롤에 있는 값을 변수로 보낸다.
UpdateData(TRUE);
//MessageBox(e4 + " " + e5, MB_OK); //문자열 연결
// 문자열을 숫자로 변환시켜주는 함수: _ttoi()
int result = _ttoi(e4) + _ttoi(e5);
CString s; // result를 메세지박스로 보려고 한다.
s.Format(L"%d", result);
MessageBox(s, MB_OK);
}
10. 자식 다이얼로그에서 edit_control을 하나더 만들어준다.
-> 새로운 edit_control7 속성에서 Number를 true로 바꿔준다.
-> 클래스 마법사를 누른다
-> 멤버변수에서 범주: 값, 형식: int, 멤버: e7로 설정한다.
void CDIALOG1::OnBnClickedButton4()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
//TRUE: 컨트롤에 있는 값을 변수로 보낸다.
UpdateData(TRUE);
//MessageBox(e4 + " " + e5, MB_OK); //문자열 연결
// 문자열을 숫자로 변환시켜주는 함수: _ttoi()
// int result = _ttoi(e4) + _ttoi(e5);
int result = e7; // 값이 정수라서 int로 받아준것임
CString s; // result를 메세지박스로 보려고 한다.
s.Format(L"%d", result);
MessageBox(s, MB_OK);
}
e7 란에 값을 입력하고 변수메시지 버튼을 누르면 메세지 창에 입력한 값이 뜬다
11. 종료버튼 작동시키는 코드 <자식 다이얼로그 cpp (DIALOG1.cpp)>
void CDIALOG1::OnBnClickedButton2() // 종료 버튼
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OnOK();
}
'Education > Edu | .net' 카테고리의 다른 글
# 14.2) [MFC] 모달리스 다이얼로그(Modeless dialog) 공유 (3) | 2021.01.22 |
---|---|
# 14.1) [MFC] 시작하기6 (0) | 2021.01.22 |
# 12.2) [C/C++] c++ 연산자 재정의 (0) | 2021.01.20 |
# 12.1) [MFC] 시작하기5 (0) | 2021.01.20 |
# 11.2) [MFC] 시작하기4 (0) | 2021.01.19 |