2009-12-21 115 views
2

我的wxwidgets程序不允许计算机在用户单击关机时关闭。我在退出程序时遇到了问题,所以我直接调用了exit(),而不是像wxwidgets所说的那样删除顶层窗口。退出解决方法一直在工作,但似乎wxwidgets在收到关闭窗口信号(?)时无法退出。我可以以某种方式捕获它,只是调用退出,以便程序不会阻止窗口关闭?我的程序阻止Windows关闭!

+0

我觉得它很酷:) – medopal 2009-12-22 08:33:17

回答

1

当Windows正在关闭它的帖子WM_SHUTDOWN消息

你能赶上该消息具有窗口中的所有应用程序?

2

Windows将WM_SHUTDOWN消息发送给所有应用程序。此事件在您的wxWidgets应用程序中映射到EVT_END_SESSION。确保你适当地处理这个事件。

请参阅wxCloseEvent Class Reference

如果遇到问题,请尝试处理EVT_QUERY_END_SESSION,这与WM_QUERY_END_SESSION有关。此消息在WM_SHUTDOWN之前发送,以使应用程序可以取消关机。

+0

我在我的MainApp对象中有EVT_END_SESSION(HandleEndSessionEvent),它是从wxApp派生的。 void MainApp :: HandleEndSessionEvent(wxCloseEvent&event)。它永远不会被调用。这看起来正确吗? – Kde23 2009-12-21 08:00:53

+0

更新了我的答案。 – 2009-12-21 08:14:03