[MFC] 메시지 박스 프로그램 작성 -2

  • 최초 작성일: 2022년 2월 23일 (수)

목차

[TOC]

목적

2개의 버튼을 생성하고, 생성된 버튼을 클릭하면 새로운 창이 표시된다.


구현

프로젝트 생성

아래와 같이 MFC Application을 생성해준다. 프로젝트명은 MsgBox2로 했다.

image


그리고, Application type (응용 프로그램 종류)는 ‘Dialog based (대화 상자 기반)’를 선택하고 [Finish] 버튼을 클릭한다.

image


다이얼로그 생성 및 설정

그러면 아래와 같은 창이 나오는데, 안 나온다면 [Ctrl]-[Shift]-[R] 혹은 [메뉴]-[보기]-[다른 창]-[리소스 뷰]를 클릭하면 된다.

image


그러면, 가운데 Dialog에 있는 모든 컨트롤들을 삭제해준다. ( [Ctrl + A] + [Delete] )

image


그런 다음, Toolbox(도구상자)로부터 Edit Control 1개와 Button 3개를 끌어와 생성하고, 아래와 같이 설정한다.

image image


멤버 변수 추가

멤버 함수를 추가하기 위해서 [메뉴]-[프로젝트]-[클래스 마법사] 또는, [Ctrl + Shift + X] 키를 눌러 [클래스 마법사]를 실행시킨다.

그럼, 아래의 창이 뜨는데 거기서 [Member Variables(멤버 변수)] 탭에서 ‘IDC_EDIT_RESULT’를 클릭한 후 ‘Add Variable(변수 추가)’ 버튼을 클릭한다.

image


Control Variable(제어 변수) 창에서 다음과 같이 설정하고 Finish 버튼을 클릭한다. 그 다음, 멤버 변수 ‘m_strResult’가 추가된 것을 확인하고 확인 버튼을 누른다.

image


또한 [클래스 뷰]-[MsgBox2]-[CMsgBox2Dlg] 에서도 ‘m_strResult’가 추가된 것 확인할 수 있다.

image


멤버 함수 추가

그러면, 클래스 마법사를 키고 IDC_BUTTON_YN [명령], BN_CLICKED [메시지] 를 클릭하고 [처리기 추가] 를 눌러 멤버 함수를 추가한다.

image


그 다음, 아래와 같이 코드를 삽입해주고, 프로그램을 빌드한 후 실행한다.

void CMsgBox2Dlg::OnClickedButtonYn()
{
	// TODO: Add your control notification handler code here
	int iResults;
	iResults = AfxMessageBox(_T("YES/NO 버튼을 누르셨습니다."), (MB_YESNO | MB_ICONEXCLAMATION));
	if (iResults == IDYES)
	{
		m_strResult = _T("YES 버튼을 누르셨습니다.");
		UpdateData(FALSE);
	}
	if (iResults == IDNO)
	{
		m_strResult = _T("NO 버튼을 누르셨습니다.");
		UpdateData(FALSE);
	}
}


실행 결과 1

image


마찬가지로, OK and Cancel 버튼에 멤버 함수를 추가하고, 아래의 코드를 삽입하고 프로그램을 빌드 후 실행한다.

void CMsgBox2Dlg::OnClickedButtonOc()
{
	// TODO: Add your control notification handler code here
	int iResults;
	iResults = AfxMessageBox(_T("OK/CANCEL 버튼을 누르셨습니다."), (MB_OKCANCEL | MB_ICONEXCLAMATION));
	if (iResults == IDOK)
	{
		m_strResult = _T("OK 버튼을 누르셨습니다.");
		UpdateData(FALSE);
	}
	if (iResults == IDCANCEL)
	{
		m_strResult = _T("CANCEL 버튼을 누르셨습니다.");
		UpdateData(FALSE);
	}
}


실행 결과 2

image


마무리

마지막으로, Exit 버튼에 대한 멤버 함수 ‘OnClickedButtonExit()’를 생성하고 아래의 코드를 삽입해주면, Exit 클릭시 프로그램이 종료된다.

void CMsgBox2Dlg::OnClickedButtonExit()
{
	// TODO: Add your control notification handler code here
	OnOK();
}