mfc_Dlg_add_2 - 8BitsCoding/RobotMentor GitHub Wiki


(์ฐธ๊ณ ) ์ƒˆ๋กœ์šด ๋Œ€ํ™”์ƒ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ Visible ์†์„ฑ์€ ํ•ญ์ƒ True๋กœ ๋ณ€๊ฒฝ!

๋‘ ๊ฐœ์˜ ๋Œ€ํ™”์ƒ์ž๋ฅผ ๋งŒ๋“ค๊ณ  ์—๋””ํŠธ ๋ฐ•์Šค๋ฅผ ํ†ตํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋ณด์ž.

// Dlg.h
public:
	afx_msg void OnBnClickedShowButton();

	NewDlg * mp_new_dlg = NULL;
	MyView * mp_my_view = NULL;
	afx_msg void OnDestroy();
protected:
	afx_msg LRESULT On27000(WPARAM wParam, LPARAM lParam);
public:
	afx_msg void OnBnClickedSetButton();
protected:
	afx_msg LRESULT On27001(WPARAM wParam, LPARAM lParam);
};
void CMFCApplication7Dlg::OnBnClickedShowButton()
{
	if (mp_new_dlg == NULL) {
		mp_new_dlg = new NewDlg;
		mp_new_dlg->Create(IDD_NEW_DLG, this);
	}
}
void CMFCApplication7Dlg::OnDestroy()
{
	CDialogEx::OnDestroy();

	if (mp_new_dlg != NULL) {
		On27000(0, 0);
		//mp_new_dlg->DestroyWindow();
		//delete mp_new_dlg;
	}

	mp_my_view->DestroyWindow();
	delete mp_my_view;
}

์ด๋ฏธ์ง€

์‚ฌ์šฉ์ž ์ง€์ •๋ฉ”์‹œ์ง€ ์ถ”๊ฐ€ํ•˜๊ธฐ

afx_msg LRESULT CMFCApplication7Dlg::On27000(WPARAM wParam, LPARAM lParam)
{
	mp_new_dlg->DestroyWindow();
	delete mp_new_dlg;
	mp_new_dlg = NULL;

	return 0;
}
void NewDlg::OnBnClickedOk()
{
	GetParent()->PostMessageW(27000);
}
void NewDlg::OnBnClickedSetButton()
{
	int num = GetDlgItemInt(IDC_NUM_EDIT);
	//GetParent()->SetDlgItemInt(IDC_NUM_EDIT, num);
	GetParent()->PostMessageW(27001, num);
}
void CMFCApplication7Dlg::OnBnClickedSetButton()
{
	if (mp_new_dlg != NULL) {
		int num = GetDlgItemInt(IDC_NUM_EDIT);
		mp_new_dlg->SetDlgItemInt(IDC_NUM_EDIT, num);
	}	
}
afx_msg LRESULT CMFCApplication7Dlg::On27001(WPARAM wParam, LPARAM lParam)
{
	// (์ฐธ๊ณ ) WPARAM์€ UINT์ด๊ธฐ์— ํ˜•๋ณ€ํ™˜ํ•ด์•ผํ•จ.
	int num = (int)wParam;
	if (num < 0) num = num * (-1);
	SetDlgItemInt(IDC_NUM_EDIT, num);
	return 0;
}

Dlg ์ค‘ View๋ฅผ ์ถ”ํ•˜๊ฐ€์—ฌ Modaless ๋‹ค์ด์–ผ๋กœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฏธ์ง€

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

	// TODO:  ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

	SetBackgroundColor(RGB(0, 100, 255));

	return TRUE;  // return TRUE unless you set the focus to a control
				  // ์˜ˆ์™ธ: OCX ์†์„ฑ ํŽ˜์ด์ง€๋Š” FALSE๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
}