标签: c++ windows
在Windows中处理Windows生命周期的默认方法是侦听WM_CLOSE消息,然后决定是否关闭窗口,然后选择性地处理WM_DESTROY消息(用于清理等)。
有没有事先可以在没有 WM_CLOSE的情况下发送 WM_DESTROY?我的意思是“由系统”,而不是手动调用DestroyWindow()或PostMessage()。或者在WM_DESTROY之前始终发送WM_CLOSE是否安全?
DestroyWindow()
PostMessage()
答案 0 :(得分:1)
是。如果您创建一个基于MFC对话框的应用程序,然后按"取消"按钮(IDCANCEL作为ID),它不发送WM_CLOSE事件。如果你按" Esc"关键,同样的事情。
如果您点击" X"在对话框右上角的按钮,是的,WM_CLOSE将被发送。
答案 1 :(得分:0)
在Dialogex消息循环的WM_COMMAND部分中,可以为WM_DESTROY添加一个案例。这种情况默认情况下捕获转义keydown,因此条件上的伴随EndDialog语句可以启动PostQuitMessage。
WM_DESTROY
EndDialog
PostQuitMessage