常用的3个消息:
WM_DESTROY 是关闭程序
WM_CLOSE 是关闭窗口
WM_QUIT 是关闭消息环
对应窗口的响应函数输入下面代码:
SendMessage(WM_CLOSE); //关闭当前的窗口
//SendMessage(WM_DESTROY); //关闭整个正在运行的.exe程序 (立即退出调试)
//SendMessage(WM_QUIT); //关闭消息环
WM_CLOSE:
在系统菜单里选择了“关闭”或者点击了窗口右上角的“X”按钮,你的窗口过程就会收到WM_CLOSE。
DefWindowProc对WM_CLOSE的处理是调用DestroyWindow。当然,你可以不让DefWindowProc处理,
而是自己处理,例如询问用户是否保存更改等。如果用户选择“取消”,你忽略此消息,那么程序照常运行;
如果用户确认要退出,你就调用DestroyWindow。
WM_DESTROY:
DestroyWindow完成窗口的清理工作,最后像窗口过程发送WM_DESTROY。对于WM_DESTROY,
DefWindowProc不会处理。也就是说,你如果不处理这个消息,虽然你的窗口已经销毁,
但进程并不会结束。一般处理WM_DESTROY时都是释放资源(例如申请的内存等),
然后调用PostQuitMessage。
WM_QUIT:
PostQuitMessage会发送WM_QUIT给消息队列。注意,WM_QUIT永远不会到达窗口过程,
因为GetMessage得到WM_QUIT后就会返回FALSE,从而结束消息循环,最后进程结束,程序退出。
对应窗口的响应函数输入下面代码:
SendMessage(WM_CLOSE); //关闭当前的窗口
//SendMessage(WM_DESTROY); //关闭整个正在运行的.exe程序 (立即退出调试)
//SendMessage(WM_QUIT); //关闭消息环