MFC 中 PretranslateMessage 的实现
在 MFC 里面,Pretranslatemessage 是一个很重要的虚函
数。这个函数的作用这里就不谈了,很多地方都有涉及,这
里只谈一下其实现的机制。谈到 PretranslateMessage 的实现,
便不得不谈到 MFC 消息循环的实现。MFC 通过 CWinApp 类
中的 Pumpmessage 函数实现消息循环,但是实际的消息循环
代码位于 CWinThread 中,CWinApp 只是从 CWinThread 继承
过 来 。 其 简 化 后 的 代 码 大 概 如 下 : BOOL
CWinThread::PumpMessage(){_AFX_THREAD_STATE *pState =
AfxGetThreadState();
::GetMessage(&(pState->m_msgCur), NULL, NULL,
NULL))if
(!AfxPreTranslateMessage(&(pState->m_msgCur))){::Tr
anslateMessage(&(pState->m_msgCur));::DispatchMes
sage(&(pState->m_msgCur));}return TRUE;} 可 以 看 到 ,
PumpMessage 在实际的 TranslateMessage 和 DispatchMessage
评论0
最新资源