1. 在对话框程序中,按回车键或ESC键会退出当前对话框,原因是回车键相应了OnOK()函数,ESC键相应了OnCancel()函数。
如不想退出当前对话框则在上述两个函数里
void CDialog::OnOK()
{
// TODO: 在此添加专用代码和/或调用基类
//CDialog::OnOK();
}
void CDialog::OnCancel()
{
// TODO: 在此添加专用代码和/或调用基类
//CDialog::OnCancel();
}
// 掉OnOK和OnCancel即可。
2. 如果建立程序时把“确定”和“取消”键删除了,找不到这两个函数,直接重载即可:
<span style="font-size:18px;">//CXXXDlg.h中 protect://public也没错 virtual void OnOk(); virtual void OnCancel(); //CXXXDlg.cpp中 void CXXXDlg::OnOk()//啥也不做就OK了 { } void CXXXDlg::OnCancel()//同上 { }</span>
3. 按上述步骤做完后,会发现,按程序右上角的“X”不能关闭程序,这时需要重载WM_CLOSE消息处理函数。
在ClassWizard中添加WM_CLOSE的消息处理函数,
添加Enddialog(IDCANCEL); //参数可以自己根据需要填写
<span style="font-size:18px;">void CDlgxxx::OnClose() //X按钮处理 { // TODO: Add your message handler code here and/or call default EndDialog(IDCANCEL); //关闭窗口 CDialog::OnClose(); }</span>
这样就可以实现程序关闭功能。
相关详细内容可参考:http://blog.csdn.net/phenixyf/article/details/41897055
4. 如果即要回车键或ESC不退出窗口,又要对某个控件特别执行特别的操作,这时需要使用PreTranslateMessage函数对这两个键的操作进行拦截,并添加相应的处理操作。
具体实现可参考:http://blog.csdn.net/phenixyf/article/details/41645771
http://blog.csdn.net/phenixyf/article/details/41643977