关于子对话框的创建与销毁
1.显示对话框
1.1显示模式对话框:
CDialogDemo dlg;
dlg.DoModal();
1.2 显示非模式对话框:
CDialogDemo *dlg=new CDialogDemo(this);
dlg->Create(IDD_GENERAL_CONTROL);
dlg->ShowWindow(SW_SHOW);
2.销毁对话框
1.CDialog::OnOK(); //确定按钮按下 CDialog::OnCancel(); //取消按钮被按下2.CDialog::DestoryWindow();3.CDialog::EndDialog( IDD );
3.在模态对话框类中关闭自身对话框
可以在模态对话框类中通过PostMessage(WM_CLOSE)来关闭自身对话框。关闭MessageBox对话框后模态对话框随之关闭。
参考代码如下:
BOOL CImportDataPromptDialog::OnInitDialog() {CDialog::OnInitDialog();// TODO: Add extra initialization hereHANDLE hThread = StartImportDataThread();if (!hThread){LOG("启动导入数据线程失败")}return TRUE; // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE }DWORD WINAPI CImportDataPromptDialog::ImportDataThread(LPVOID Param){CImportDataPromptDialog* importDlg = (CImportDataPromptDialog*)Param;if (CImportLog::ExtractionXMLData(importDlg->m_sXmlFilePath, importDlg->m_sDBPath)){importDlg->MessageBox("导入数据成功","平台", MB_ICONINFORMATION);importDlg->PostMessage(WM_CLOSE);}else{importDlg->MessageBox("导入数据失败","平台", MB_ICONEXCLAMATION);importDlg->PostMessage(WM_CLOSE);}return 0;}HANDLE CImportDataPromptDialog::StartImportDataThread(){LOG("启动导入数据线程");CWinThread* hThread = AfxBeginThread((AFX_THREADPROC)CImportDataPromptDialog::ImportDataThread,(LPVOID)this);return (hThread->m_hThread);}
4.几个相关重要函数的详细讲解
4.1 CloseWindow
函数功能:该函数最小化指定的窗口,但并不销毁该窗口。
函数原型:BOOL CloseWindow(HWND hWnd);参数:hWnd:将要最小化的窗口的句柄。
返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
备注:窗口尺寸被最小化成一个图标,并移动到屏幕的图标区域。系统显示窗口的图标而不显示窗口,并在图标下显示窗口标题。应用程序必须使用DestroyWindow函数销毁窗口。4.2 DestroyWindow
函数功能:销毁指定的窗口。这个函数通过发送WM_DESTROY 消息和 WM_NCDESTROY 消息使窗口无效并移除其键盘焦点。这个函数还销毁窗口的菜单,清空线程的消息队列,销毁与窗口过程相关的定时器,解除窗口对剪贴板的拥有权,打断剪贴板器的查看链。
函数原型:BOOL DestroyWindow( HWND hWnd // handle to window to destroy);
hWnd :将被销毁的窗口的句柄。
返回值:如果函数成功,返回值为非零:如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
备注:一个线程不能使用本函数销毁别的线程创建的窗口。如果这个窗口是一个不具有WS_EX_NOPARENTNOTIFY 样式的子窗口,则销毁窗口时将发WM_PARENTNOTIFY 消息给其父窗口。Windows CE: 本函数将不发送 WM_NCDESTROY 消息.4.3 EndDialog
函数功能:该函数清除一个模态对话框,并使系统中止对对话框的任何处理。
函数原型:BOOL EndDialog(HWND hDlg,int nResult);
参数:hDlg:表示要被清除的对话框窗口。NResult:指定从创建对话框函数返回到应用程序的值。
返回值:如果函数调用成功,则返回值为非零值;如果函数调用失败则返回值为零。若想获得错误信息请调用GetLastError函数。
备注:由DialogBox,DialogBoxParam、DialogBoxlndirect和DialogBoxlndirectParam函数创建的对话框一定要用EndDialog函数来清除。应用程序从对话框应用程序内部调用EndDialog函数,该函数不能为其他目的而供使用。对话框应用程序可以在任何时间调用EndDialog函数;甚至在WM_INITDIALOG消息处理过程中。如果应用程序在WM_INTDIALOG消息处理过程中调用该函数,则对话框在显示和输入焦点被设置之前对话框被清除。EndDialog函数并不立即清除对话框。而是设置一个标志,并且允许对话框应用程序把控制权返回系统。系统在试图从应用程序队列检索下一个消息之前检测标志。如果已经设置了标志则系统中止消息循环,清除对话框,且用nResUlt中的值作为从创建对话框的函数中返回的值。
关于子对话框的创建与销毁相关推荐
- MFC模态与非模态对话框的创建与销毁
1.模态对话框的创建 (1)添加新的模块对话框资源,在ResourceView标签中右键项目选择"add resource...",添加一个对话框资源,并修改其ID(主要为了方便后 ...
- vc++开发学习二(模态对话框和非模态对话框的创建和销毁)
①.模态对话框与非模态对话框的区别: 模态对话框:一旦创建模态对话框,则无法操作父对话框,只能操作当前创建的模态对话框,关闭当前模态对话框后才可以操作父对话框非模态对话框:和模态对话框相反,创建该对话 ...
- 非模态对话框的创建于销毁
橡皮线的工作原理:就必须不停地在新位置画出线段,并把以前的画出的线段擦掉.如果背景是单一的颜色,那就好办了,只需要构造一支背景颜色的画笔和一支前景颜色的画笔,然后首先用背景色画笔擦出上次的线段,再用前 ...
- dialog对话框初始化 mfc_MFC添加子对话框及如何初始化
一.建立子对话框 1.建立一个基于对话框的MFC工程 2.在资源视图中右键单击.rc文件,然后选择添加添加资源->Dialog 3.第二步新建的Dialog对话框中默认的会有确认和取消两个按钮( ...
- 关于模态对话框和非模态对话框的创建、显示,以及和父对话框的传值
当然网上关于这方面的技术博文非常多,此处我只是进行一下小记,再加一点自己的体会,方便以后查询. 一.模态对话框 1.创建及显示 模态对话框是一种阻塞式的对话框,即没有处理完该对话框,不能对其他地方进行 ...
- QWidget一生,从创建到销毁事件流
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QWidget一生,从创建到销毁事件流 本文地址:http://techieliang ...
- 《Effect Java》学习笔记1———创建和销毁对象
第二章 创建和销毁对象 1.考虑用静态工厂方法代替构造器 四大优势: i. 有名称 ii. 不必在每次调用它们的时候都创建一个新的对象: iii. 可以返回原返回类型的任何子类型的对象: JDBC ...
- 《Effective Java》学习笔记 第二章 创建和销毁对象
第二章 创建和销毁对象 何时以及如何创建对象,何时以及如何避免创建对象,如何确保他们能够适时地销毁,以及如何管理对象销毁之前必须进行的各种清理动作. 1 考虑用静态工厂方法代替构造器 一般在某处获取一 ...
- Effective Java:创建和销毁对象
前言: 读这本书第1条规则的时候就感觉到这是一本很好的书,可以把我们的Java功底提升一个档次,我还是比较推荐的.本博客是针对<Effective Java>这本书第2章所写的一篇读书笔记 ...
最新文章
- 专业的java培训机构是否靠谱,对比一下就知道了!
- WebAPI 2.x中如何扩展Identity Store
- Codeforces Round #144 (Div. 2) B. Non-square Equation 数学解一元二次方程+分析
- GIS可视性分析概述
- Winforn中使用代码动态生成控件
- 第三方控件DevExpress的TreeList绑定XML文件
- Upload LABS Pass-11
- Nginx安装问题记录
- 从零开始搭建ELK+GPE监控预警系统
- Java Web 后端技术
- MAC 安装 kafka
- Cross-lingual Document Retrieval using Regularized Wasserstein Distance
- 网吧用计算机性能配件清单,网吧组装电脑配置清单
- 计算机放音乐声音小在吗调,笔记本外放声音太小怎么办?-电脑教程
- 备份路由器配置文件到服务器,教你如何备份路由器配置文件
- 房产抵押贷款利率划算吗
- Android应用程序开发——创建应用程序
- python3 :习题40、习题41
- python打印Excel文件方法
- PBOC APDU命令解析