Windows API:事先可以在没有WM_CLOSE的情况下发送WM_DESTROY吗?

时间:2017-07-25 21:09:04

标签: c++ windows

在Windows中处理Windows生命周期的默认方法是侦听WM_CLOSE消息,然后决定是否关闭窗口,然后选择性地处理WM_DESTROY消息(用于清理等)。

有没有事先可以在没有 WM_CLOSE的情况下发送 WM_DESTROY?我的意思是“由系统”,而不是手动调用DestroyWindow()PostMessage()。或者在WM_DESTROY之前始终发送WM_CLOSE是否安全?

2 个答案:

答案 0 :(得分:1)

是。如果您创建一个基于MFC对话框的应用程序,然后按"取消"按钮(IDCANCEL作为ID),它不发送WM_CLOSE事件。如果你按" Esc"关键,同样的事情。

如果您点击" X"在对话框右上角的按钮,是的,WM_CLOSE将被发送。

答案 1 :(得分:0)

Dialogex消息循环的WM_COMMAND部分中,可以为WM_DESTROY添加一个案例。这种情况默认情况下捕获转义keydown,因此条件上的伴随EndDialog语句可以启动PostQuitMessage