关闭程序窗口函数调用过程
2013-07-24 20:25
169 查看
使用者选按关闭按钮,于是发出 WM_CLOSE。
CMyFrameWnd 并没有设置WM_CLOSE 处理常式,于是交给预设之处理常式。
预设函数对于WM_CLOSE 的处理方式是呼叫 ::DestroyWindow, 并因而发出WM_DESTROY。
预设之WM_DESTROY 处理方式是呼叫::PostQuitMessage,因此发出WM_QUIT。
CWinApp::Run 收到WM_QUIT 后会结束其内部之讯息回路, 然后呼叫ExitInstance,这是CWinApp 的一个虚拟函数。
如果CMyWinApp 改写了ExitInstance , 那么CWinApp::Run 所呼叫的就是CMyWinApp::ExitInstance,否则就是 CWinApp::ExitInstance。
最后回到 AfxWinMain,执行 AfxWinTerm,结束程序。
WM_CLOSE,调用DestroyWindow()
DestroyWindow()又发送WM_DESTROY
响应WM_DESTROY,调用WM_QUIT
GetMessage()发现WM_QUIT,退出程序
CMyFrameWnd 并没有设置WM_CLOSE 处理常式,于是交给预设之处理常式。
预设函数对于WM_CLOSE 的处理方式是呼叫 ::DestroyWindow, 并因而发出WM_DESTROY。
预设之WM_DESTROY 处理方式是呼叫::PostQuitMessage,因此发出WM_QUIT。
CWinApp::Run 收到WM_QUIT 后会结束其内部之讯息回路, 然后呼叫ExitInstance,这是CWinApp 的一个虚拟函数。
如果CMyWinApp 改写了ExitInstance , 那么CWinApp::Run 所呼叫的就是CMyWinApp::ExitInstance,否则就是 CWinApp::ExitInstance。
最后回到 AfxWinMain,执行 AfxWinTerm,结束程序。
WM_CLOSE,调用DestroyWindow()
DestroyWindow()又发送WM_DESTROY
响应WM_DESTROY,调用WM_QUIT
GetMessage()发现WM_QUIT,退出程序
相关文章推荐
- MFC应用程序中处理消息的顺序,创建窗口的过程关闭窗口的顺序(非模态窗口),打开模式对话框的函数调用顺序
- android如何看程序调用过程
- Oracle存储过程、存储函数以及Java程序调用存储过程和存储函数
- C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常,不存在从对象类型System.Windows.Forms.DateTimePicker到已知的托管提供程序本机类型的映射。
- 黑马程序员-Java虚拟机调用Java程序的过程
- 在VS2008中编译纯c/c++程序并由c#调用过程
- 增加存储过程参数,确保调用老接口程序不出错
- 调用Https WebService是报“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系”的解决过程
- mysql 创建存储过程 java程序调用该存储过程
- oracle顺序控制语句goto、null和分页过程中输入输出存储、java程序的调用过程
- 启动画面关闭后才显示主程序...在这过程中进行程序的初始化.
- 通过程序调用存储过程
- MFC应用程序中处理消息的顺序,创建窗口的过程关闭窗口的顺序(非模态窗口),打开模式对话框的函数调用顺序
- Jim Chan函数调用的汇编程序过程
- pb中调用API函数后程序莫名关闭退出原因之一
- python3 中双递归函数的调用过程详解与print()函数在程序调试过程中的作用
- 精通COBOL--11.3.2 主调用程序中的调用过程
- 如何通过java程序调用oracle中的存储过程
- 【4】Oracle_Java程序调用存储过程和存储函数
- iOS4.0及以上系统,关闭程序,applicationWillTerminate为调用问题解决