vc 关闭对话框几种方法 .
2012-02-02 10:25
183 查看
参考网上资料,对话框关闭流程如下:
从用户单击关闭按钮(标题栏最右边)或者用鼠标或键盘选择系统菜单的“关闭”选项,直到窗口消失,应用程序结束。这期间到底发生了什么呢?
1、首先会产生一个WM_SYSCOMMAND消息,如果程序员没有对此消息进行拦截,则由缺省的窗口函数DefWindowProc进行处理,如果表达式(LOWORD(wParam)&0xFFF0)==SC_CLOSE 成立,DefWindowProc发出一个WM_CLOSE消息。
2、同样,如果程序员没有对WM_CLOSE消息进行拦截,则还是由DefWindowProc进行处理,这次,她只简单的调用DestroyWindow函数,DestroyWindow先把窗口破坏掉,使用户看不到窗口。但是窗口破坏后,应用程序并没有结束,于是DestroyWindow再接再励,送出了一个WM_DESTROY消息。
3、这一次,WM_DESTROY被载获了,通常是会有这样的句子:
case WM_DESTROY:
PostQuitMessage(0);
...
这里PostQuitMessage函数很简单的发送一个WM_QUIT消息来响应WM_DESTROY
4、WM_QUIT消息非常特殊,她使GetMessage函数返回0,从而结束了消息循环,
应用程序从此结束。
关于关闭对话框,统计几种关闭方法:
向主窗口发送WM_CLOSE消息,使得主窗口调用OnClose函数销毁
直接调用CDialog:OnOK()函数
从用户单击关闭按钮(标题栏最右边)或者用鼠标或键盘选择系统菜单的“关闭”选项,直到窗口消失,应用程序结束。这期间到底发生了什么呢?
1、首先会产生一个WM_SYSCOMMAND消息,如果程序员没有对此消息进行拦截,则由缺省的窗口函数DefWindowProc进行处理,如果表达式(LOWORD(wParam)&0xFFF0)==SC_CLOSE 成立,DefWindowProc发出一个WM_CLOSE消息。
2、同样,如果程序员没有对WM_CLOSE消息进行拦截,则还是由DefWindowProc进行处理,这次,她只简单的调用DestroyWindow函数,DestroyWindow先把窗口破坏掉,使用户看不到窗口。但是窗口破坏后,应用程序并没有结束,于是DestroyWindow再接再励,送出了一个WM_DESTROY消息。
3、这一次,WM_DESTROY被载获了,通常是会有这样的句子:
case WM_DESTROY:
PostQuitMessage(0);
...
这里PostQuitMessage函数很简单的发送一个WM_QUIT消息来响应WM_DESTROY
4、WM_QUIT消息非常特殊,她使GetMessage函数返回0,从而结束了消息循环,
应用程序从此结束。
关于关闭对话框,统计几种关闭方法:
向主窗口发送WM_CLOSE消息,使得主窗口调用OnClose函数销毁
直接调用CDialog:OnOK()函数
相关文章推荐
- vc 关闭对话框几种方法
- vc 关闭对话框几种方法
- StatusBar on Dialogs-在VC中为作为主窗口的对话框添加状态栏的几种方法
- VC里对画图设备的调用的几种方法!!
- VC下显示位图的几种方法
- ASP.NET弹出对话框几种基本方法 和 页面跳转
- VC/MFC子窗体向父窗体传递参数的几种方法
- VC 获 取 当前程序运行路径的几种方法
- 【Swift】- UITextField完成输入后关闭软键盘的几种方法
- 编程技巧之:双击VC对话框提示cannot add new member以及类向导中没有已经建立的类的解决方法
- (转载)ios关闭虚拟键盘的几种方法
- ASP.NET弹出对话框几种基本方法
- VC编写DLL几种方法的简介. 收藏
- VC++开机自动启动程序的几种方法 (转载)
- 给VC应用程序换皮肤的几种方法
- [Windows][VC]开机自动启动程序的几种方法
- ASP.NET弹出对话框几种基本方法
- VC中退出应用程序-几种很有用的方法
- WinForm窗口关闭的几种常用方法
- 几种MFC对话框的隐藏方法