微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么可能导致DefWindowProc停止处理消息?

我遇到了我的应用程序的奇怪行为。 我想在MDI应用程序closures框架窗口,所以我发送WM_SYSCOMMAND(SC_CLOSE)到该窗口。 之后,我收到OnSysCommand。 然后我调用CMDIChildWnd :: OnSysCommand继续处理。

问题是,有时OnSysCommand基地实现调用OnClose和我的框架被破坏,有时不会。 我做了一个调查,似乎差异出现在_NtUserMessageCall(实际上这个方法调用一些内核模式function失败)。 当WS_SYSCOMMAND成功比_NtUserMessageCall调用dispatchHook和一大堆user32.dll方法,我的消息到达目标窗口。 如果失败,框架窗口不closures,OnClose不被调用

我想出了什么会导致这种奇怪的行为。 我用Application Verifier检查了应用程序,一切似乎都没有问题。 还有一件事,只有当我的应用程序通过COM启动时,才会出现问题。

我与这个问题斗争了两天,我需要一些新的线索在哪里继续挖掘。

调用它的时候删除仿函数是否安全?

构build多个平台的Linux二进制文件

我们可以执行rightclick而不使用pCmdInfo-> lpVerb

无法从OnExit()中删除在WxApp中创build的dynamic对象

处理socket描述符如文件描述符(fstream)? C ++ / Linux的

x86_64上的缓冲区溢出 – 返回到libc攻击(linux)

c ++从一个静态函数调用一个非静态函数

在Linux上查询ACL

Ubuntu上的性能计数器库

布数字化仪! 制作真正的布料的3d模型

我建议在你的OnSysCommand处理程序中,只要发送WM_CLOSE消息到主框架窗口,然后再调用认处理。

但是不要打扰调用CMDIChildWnd :: OnSysCommand方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐