关于PreTranslateMessage的一个一怪问题

dawei_sun 2009-08-27 05:20:31
MainFrm里面有一个Output窗口.有一个标签页,标签页分别对应三个窗口.但是这个三个窗口的PreTranslateMessage却不能获取消息. 但是OnKeyDown到是可以响应...为什么.我用Spy++看了一下.消息确实是这个窗口产生的.为什么??
...全文
64 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawei_sun 2009-09-27
  • 打赏
  • 举报
回复
自己回答一下,是资源切换的问题. MFC在调用PreTranslateMessage的时候会调用CWnd::FromHandlePermanent, 这个函数会根据消费的HWND通过一个全局的表获取CWnd对象.然后通过这个对象的PreTranslateMessage

但是在DLL的对话框中,由于做了AFX_MANAGE_STATE(AfxGetStaticModuleState()); 导致DLL的窗口和其对应对象的关系维护在了DLL的全局表中,而不是程序的全局表中.从而导致CWnd::FromHandlePermanent返回为空.无法调用PreTranslateMessage.

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧