最近需要开一个新项目,用VS2010做基于MFC框架的程序。由于项目需求,要避免对话框相应Enter/Space的默认操作。
程序中又有很多个不同的Dialog对话框。决定做一个从CDialogEx派生的对话框基类。
屏蔽Enter/Space的默认操作,网上大把资料,原因原理说的很通透了。我直接选了一个自己常用的,重载PreTranslateMessage(MSG* pMsg)函数,下面是函数代码。
BOOL CBaseDialog::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
return TRUE;
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
return TRUE;
return CDialogEx::PreTranslateMessage(pMsg);
}
创建MFC基类和MFC派生类很像,只要就行一些小修改就可以。
先按照用类创建向导生成一个派生类,我这里就是直接生成一个CDialogEx派生类
然后,参考CDialogEx类修改构造函数,CDialogEx的头文件是可以访问的。