대화상자에서 사용자의 모든 키 입력은 대화상자가 먼저 받으며 포커스를 가진 컨트롤이 원할 경우만 컨트롤에게 전달된다.
컨트롤보다 엔터키(Tab, Enter, Esc, 커서 이동키 등)를 먼저 받는다. // ??
CDialog -> CWnd
OnInitDialog
UpdateData(FALSE)
OnOK
UpdateData(TRUE)
OnCancel
OnPaint
.Create()
.DestroyWindow()
.UpdateData()
.GotoDlgCtrl()
Enter, ESC 키 무시
OnCancel을 오버라이드하면 다이얼로그 창을 닫을 수 없다.
BOOL CProcessADlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
switch(pMsg->message)
{
case WM_KEYDOWN:
{
switch(pMsg->wParam)
{
case VK_ESCAPE:
case VK_RETURN:
return TRUE;
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
// 모달리스
class CCodeTableDlg : public CDialog
{
// Construction
public:
CCodeTableDlg(CWnd* pParent = NULL); // standard constructor
...
};
class CPractice4_2Dlg : public CDialog
{
...
// Implementation
protected:
HICON m_hIcon;
void CPractice4_2Dlg::OnButtonCodeView()
{
// TODO: Add your control notification handler code here
// 현재 코드 테이블 대화상자가 출력되어 있는 않다면...
if (!m_bCodeViewed)
{