为什么对View 发送WM_CLOSE,只是View被清除了,而程序没有退出,对View发送WM_DESTROY什么都没发生
而对Frame发送WM_CLOSE,程序都退出了,对Frame发送WM_DESTROY发送WM_DESTROY只是工具栏没有了,就算是Frame没有了的话,那View也应该没有啊,因为View是依附于Frame之上的,为什么对Frame发送WM_DESTROY程序没有退出
深入浅出MFC是这么说的,单击close命令时,系统发出WM_CLOSE,通常程序的窗口函数不拦截次消息,于是DefWindowProc处理它。
DefWindowProc收到WM_CLOSE后,调用DestroyWindow把窗口清除,DestroyWindow本身又会发出WM_DESTROY,程序的WM_DESTROY的标准反应是调用PostQuitMessage,发出WM_QUIT,然后结束程序
那么对View发送WM_DESTROY不应该Quit吗?
而对Frame发送WM_CLOSE,程序都退出了,对Frame发送WM_DESTROY发送WM_DESTROY只是工具栏没有了,就算是Frame没有了的话,那View也应该没有啊,因为View是依附于Frame之上的,为什么对Frame发送WM_DESTROY程序没有退出
深入浅出MFC是这么说的,单击close命令时,系统发出WM_CLOSE,通常程序的窗口函数不拦截次消息,于是DefWindowProc处理它。
DefWindowProc收到WM_CLOSE后,调用DestroyWindow把窗口清除,DestroyWindow本身又会发出WM_DESTROY,程序的WM_DESTROY的标准反应是调用PostQuitMessage,发出WM_QUIT,然后结束程序
那么对View发送WM_DESTROY不应该Quit吗?
解决方案 »
- 求一个vc延时的代码
- CInternetSession 获取网页不完整的问题,大家帮忙测试下
- 如何用ADO连接局域网SQL server 与连接本地的ACCESS有什么地方不一样
- 书上说,编译时,变量的内存地址就确定了,可是内存是动态分配的呀,为什么说编译时能够确定内存地址,永不变化呢?
- 怎么统计单位时间内的网络流量啊...急!求助...
- 如何根据参数判断进入控制台程序还是弹出窗口界面?
- 对话框程序,读取位置时发生访问冲突
- C/C++高手们,谈点经验吧
- 戒烟应该是很容易的事--写给暂时的自己和戒烟同好患者
- 屏幕定制!有趣的挑战?
- 是否将开源库编译成dll,即可规避gpl或lgpl的风险,谢谢!
- 在XP的操作系统下,怎样才能将流经网卡的数据包全都抓到呢?
-------
sdk的初级教科书都喜欢这么说,那么针对只有一个界面的程序。
对于MFC程序,是检测到线程主窗口被关闭才PostQuitMessage退出消息循环。
一个典型的MFC程序这么多窗口,随便关个view就推出消息循环那还了得
这是明显的不可预测。
因为:你把视图销毁了,但是其他的框架还在。所以根本不会退出。
即便销毁的也是视图,文档和其他的框架不会被销毁。你这么做会造成不可预知的错误。