728x90
반응형

- 부모

다이얼로그 : 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: 초기화 함수

[클래스 마법사 시작]
[DIALOG1.cpp_초기화 함수 호출]

자식 다이얼로그로 돌아가서 edit_control 우클릭 -> 클래스 마법사 시작

-> 멤버 변수에 들어간다 -> IDC_EDIT4를 클릭하고 변수 추가를 누른다

-> 범주를 값으로 바꾸고 이름을 e4, e5, e6로 바꿔준다. -> 적용, 확인

[CDIALOG1.h]

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();
}

 

728x90
반응형

+ Recent posts