关于窗口销毁

来源:百度知道 编辑:UC知道 时间:2024/06/24 16:25:20
从程序员调用PostQuitMessage()到系统调用CWinThread::ExitInstance()之间 是谁销毁了主窗口??
不好意思 是我没说清楚 我的意思是多线程 我启动了一个UI线程 当我需要结束这个线程的时候 我写上POSTQUITMESSAGE() 这样线程结束了 窗口(听说)也销毁了 而我需要做的只是在EXITINSTANCE()中把线程的主窗口对象delete掉 但我找了很多资料没有发现在这个过程中 窗口是如何或何时被销毁的 我请教的是这个过程下的窗口销毁~ 麻烦大家了

正确的退出方法应该是先发送WM_CLOSE消息,在WM_CLOSE消息处理中发送WM_DESTROY消息,在WM_DESTROY消息处理中销毁窗口并发送WM_QUIT,WM_QUIT只有一个作用,让GetMessage返回0,使消息循环终止

当你按下右上角的X或者使用SendMessage发送WM_CLOSE的时候,窗体会对消息进行检查,无误后(一般你可以在这里进行撤销关闭操作,比如提示文件为保存),会使用DestroyWindow()
(应该在CWinApp::Run中进行,不过CWinApp会把消息转发给CWinThread::Run,然后在CWinThread::Run中还会进行再次的转发,MFC老是干这些偷鸡摸狗的事情-。-||)
当消息泵收到WM_DESTROY的时候,就会用PostQuitMessage(0),发送WM_QUIT,当GetMessage收到WM_QUIT,就会返回。于是整个消息循环结束。
当然,具体还需要你自己去看MFC的源代码