void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
if(nID==SC_CLOSE&&lParam==0)
{
return;
}
CFrameWnd::OnSysCommand(nID, lParam);
}
按下ESC和ENTER键时禁止关闭对话框
方法一:
(1) 重载OnCancel和OnOk,屏蔽其中的CDialog::OnCancel()和CDialog::OnOk();
(2) 添加以下代码
void CTest6Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout; //if you have an about dialog
dlgAbout.DoModal();
}
else if ((nID & 0xFFF0) == SC_CLOSE)
{
//用户点击右上角"X"
EndDialog(IDOK);
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
方法二:
BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg)
{
if ( pMsg->message == WM_KEYDOWN )
{
switch(pMsg->wParam)
{
case VK_ESCAPE:
return TRUE; //直接返回TRUE
break;
case VK_RETURN:
return TRUE;
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}