看MFC源码找不到CWnd::PreTranslateMessage是什么时候被调用的,没什么道理啊,CWinThread中的消息循环:
if(!PreTranslateMessage(...))
{
::TranslateMessage(..);
::DispatchMessage(..);
}
上面已经把msg消息翻译过了,那CWnd::PreTranslateMessage还有什么用呢?
统一窗口过程入口AfxWndProc中也没有PreTranslateMessage也没有啊。
哪位大哥能告诉我CWnd::PreTranslateMessage是什么时候被调用的吗?
if(!PreTranslateMessage(...))
{
::TranslateMessage(..);
::DispatchMessage(..);
}
上面已经把msg消息翻译过了,那CWnd::PreTranslateMessage还有什么用呢?
统一窗口过程入口AfxWndProc中也没有PreTranslateMessage也没有啊。
哪位大哥能告诉我CWnd::PreTranslateMessage是什么时候被调用的吗?
添加之后,
BOOL CChildFrame::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
return CMDIChildWnd::PreTranslateMessage(pMsg);
}
所有从CChildFrame过的消息都会进入这个函数。可以在里面处理,这个函数权限很大。要慎用
{
if(pMsg->message == 什么消息)
{
//处理
}
return CDialog::PreTranslateMessage(pMsg);
}