WM_DESTROY WM_CLOSE WM_QUIT三个消息的理解

DefWindowProc对WM_CLOSE的处理是调用DestroyWindow, DestroyWindow完成窗口的清理工作,最后像窗口过程发送WM_DESTROY。对于WM_DESTROY,DefWindowProc不会处理。也就是说,你如果不处理这个消息,虽然你的窗口已经销毁,但进程并不会结束。一般处理WM_DESTROY时都是释放资源(例如申请的内存等),然后调用PostQuitMessage。  
  PostQuitMessage会发送WM_QUIT给消息队列。注意,WM_QUIT永远不会到达窗口过程,因为GetMessage得到WM_QUIT后就会返回FALSE,从而结束消息循环,最后进程结束,程序退出。

 

从这里我们可以得出一些结论,当WM_CLOSE,WM_DESTROY,WM_QUIT被处理时,我们可以不用管系统或者我们对它做了什么,但是有一点可以肯定,窗口类的析构函数并没有被调用,至少从理论上是这么分析的,但是窗口的句柄等系统资源已经被关闭,释放。知道这些后我们可以做什么呢,因本人最近想关掉窗口句柄节省资源,依然可以使用窗口类中自定义的函数以及属性。析构函数没有被调用说明这个窗口类其实还存在。那我们就可以继续使用。

你可能感兴趣的:(WM_DESTROY WM_CLOSE WM_QUIT三个消息的理解)