作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用带有 MFC 和 Windows 7 的 Visual Studio 2005。我有一个包含许多对话框窗口的应用程序。
我使用 OnSysCommand 检查 SC_CLOSE 消息并检查 lParam 以确定这是从任务栏还是对话框上的关闭按钮启动的。但是,如何确定关闭消息是来自任务栏的“关闭所有窗口”还是仅来自任务栏的单个对话框?
谢谢
最佳答案
我认为您无法通过一条消息解决此问题。
当您关闭应用程序时,您还必须区分鼠标操作和 Alt+F4如果您使用 Alt+F4 关闭应用程序,该消息看起来与从任务栏关闭它一样(查看 lParam 值)
您可以查看使用 GetMessage 检索的最后一条消息(最后一条输入消息)。如果消息来自任务栏,则它是已发布的 WM_SYSCOMMAND。如果消息来自内部,您会收到 WM_SYSCOMMAND 作为 SendMessage。
您可以使用 AfxGetCurrentMessage 来确定最后输入的消息是什么。如果您在此处找到 WM_SYSCOMMAND,则关闭来自任务栏。如果您在此处找到键盘或鼠标消息,则该消息来自用户输入。
提示:使用 Spy++ 检查此行为。
关于c++ - 如何在 Windows 7 的 MFC 中区分 "Close All Windows"和 "Close"单个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23408190/
我是一名优秀的程序员,十分优秀!