程序已经开发完成,却发现了这样一个bug:在没有任何按钮被选中的话,按enter或者esc程序就会退出.
跟踪enter发现退出程序是从对话框的执行文件中的DoDataExchange函数开始的,而按esc程序的运行踪迹便没有了,不知道怎么查啊.你遇到过同样的问题吗?
跟踪enter发现退出程序是从对话框的执行文件中的DoDataExchange函数开始的,而按esc程序的运行踪迹便没有了,不知道怎么查啊.你遇到过同样的问题吗?
//屏蔽ESC、ENTER等键盘消息
BOOL CxxDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN && (pMsg->wParam==VK_RETURN || pMsg->wParam==VK_ESCAPE) ){
return TRUE;
} return CDialog::PreTranslateMessage(pMsg);
}
{
// CDialog::OnOK();
}
void CProject4Dlg::OnCancel()
{
// CDialog::OnCancel();
}
这样最简单
是专门负责回答问题的吗?怎么我提的问题好像他都回答过?感谢!
ddlddy的方法我觉得行不通,至少以我的目前的水平,我认为是这样的.其他兄弟们的思路其实也是跟我的一样,但是我其实苦于的不是别的正是不知如何屏遮enter和esc.
既然seu07201213给出了方法,我就试着分析一下吧,希望想刨根问底的同学一起研究.顾名猜意,PreTranslateMessage是在处理消息之前进行一些准备的函数,那么我们在这里就可以捕获一些我们自己不愿意发给程序的消息,我就只能解释这么多,进一步往深了说就是windows处理消息的机制了,所以也不怎么好说了,如果你能一语道破天机,你不防发表一下你的看法.