【发布时间】:2013-07-02 13:37:24
【问题描述】:
我们有一个遗留的 C Windows 应用程序,当发生致命连接错误时,它会通过 MessageBox 调用弹出一个模式窗口。我们的网络工程师可能会同时运行许多这样的应用程序。有时,网络故障会导致这些应用程序正在处理的连接同时失败。
在 Windows 7 上,从任务栏中选择“关闭所有窗口”功能确实有效,因为模式对话框似乎没有处理 WM_QUIT 消息。我通常在 Linux 系统上工作,但我的 MSDN 研究表明,我可以捕获和处理此消息的唯一方法是创建自己的对话框并自己处理消息。
我担心我忽略了一个更简单的解决方案,谁能提供替代方案?
【问题讨论】:
-
若要关闭窗口,请发送
WM_CLOSE,如果它是应用程序的主窗口,应用程序也会结束。WM_QUIT是结束整个应用程序并关闭它拥有的所有窗口。 -
"...从任务栏中选择“关闭所有窗口”功能确实有效,因为模式对话框似乎没有处理 WM_QUIT 消息。" 我愿意没有真正得到问题?您要关闭对话框弹出窗口,还是退出应用程序?
-
“...我可以捕获和处理此消息的唯一方法...”哪个消息?
-
我认为它是 WM_QUIT 消息,当用户单击 Win7 任务栏中的“关闭所有 Windows”按钮时生成的消息。这被模态窗口忽略并阻止应用程序关闭
-
要深入了解此类问题,windows-message-logger 是首选工具。在 VC 的付费软件版本中,有一个名为
spyXYZ.exe之类的工具。
标签: c++ c windows event-handling messagebox