PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当你需要在MFC之前处理某些消息时,常常要在这里添加代码.
只有穿过消息队列的消息才受PreTranslateMessage()影响,采用SendMessage()或其他类似的方式向窗口直接发送的而不经过消息队列的消息根本不会相应PreTranslateMessage()的存在。
例子:屏蔽回车键
重载PreTranslateMessage之后添加代码:
BOOL Cmotionctrl::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN) return TRUE; //如果是回车消息,返回;
else
return CDialog::PreTranslateMessage(pMsg);
}