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中的值作为从创建对话框的函数中返回的值。

关于子对话框的创建与销毁相关推荐

  1. MFC模态与非模态对话框的创建与销毁

    1.模态对话框的创建 (1)添加新的模块对话框资源,在ResourceView标签中右键项目选择"add resource...",添加一个对话框资源,并修改其ID(主要为了方便后 ...

  2. vc++开发学习二(模态对话框和非模态对话框的创建和销毁)

    ①.模态对话框与非模态对话框的区别: 模态对话框:一旦创建模态对话框,则无法操作父对话框,只能操作当前创建的模态对话框,关闭当前模态对话框后才可以操作父对话框非模态对话框:和模态对话框相反,创建该对话 ...

  3. 非模态对话框的创建于销毁

    橡皮线的工作原理:就必须不停地在新位置画出线段,并把以前的画出的线段擦掉.如果背景是单一的颜色,那就好办了,只需要构造一支背景颜色的画笔和一支前景颜色的画笔,然后首先用背景色画笔擦出上次的线段,再用前 ...

  4. dialog对话框初始化 mfc_MFC添加子对话框及如何初始化

    一.建立子对话框 1.建立一个基于对话框的MFC工程 2.在资源视图中右键单击.rc文件,然后选择添加添加资源->Dialog 3.第二步新建的Dialog对话框中默认的会有确认和取消两个按钮( ...

  5. 关于模态对话框和非模态对话框的创建、显示,以及和父对话框的传值

    当然网上关于这方面的技术博文非常多,此处我只是进行一下小记,再加一点自己的体会,方便以后查询. 一.模态对话框 1.创建及显示 模态对话框是一种阻塞式的对话框,即没有处理完该对话框,不能对其他地方进行 ...

  6. QWidget一生,从创建到销毁事件流

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QWidget一生,从创建到销毁事件流     本文地址:http://techieliang ...

  7. 《Effect Java》学习笔记1———创建和销毁对象

    第二章 创建和销毁对象 1.考虑用静态工厂方法代替构造器 四大优势: i. 有名称 ii. 不必在每次调用它们的时候都创建一个新的对象:   iii. 可以返回原返回类型的任何子类型的对象: JDBC ...

  8. 《Effective Java》学习笔记 第二章 创建和销毁对象

    第二章 创建和销毁对象 何时以及如何创建对象,何时以及如何避免创建对象,如何确保他们能够适时地销毁,以及如何管理对象销毁之前必须进行的各种清理动作. 1 考虑用静态工厂方法代替构造器 一般在某处获取一 ...

  9. Effective Java:创建和销毁对象

    前言: 读这本书第1条规则的时候就感觉到这是一本很好的书,可以把我们的Java功底提升一个档次,我还是比较推荐的.本博客是针对<Effective Java>这本书第2章所写的一篇读书笔记 ...

最新文章

  1. 专业的java培训机构是否靠谱,对比一下就知道了!
  2. WebAPI 2.x中如何扩展Identity Store
  3. Codeforces Round #144 (Div. 2) B. Non-square Equation 数学解一元二次方程+分析
  4. GIS可视性分析概述
  5. Winforn中使用代码动态生成控件
  6. 第三方控件DevExpress的TreeList绑定XML文件
  7. Upload LABS Pass-11
  8. Nginx安装问题记录
  9. 从零开始搭建ELK+GPE监控预警系统
  10. Java Web 后端技术
  11. MAC 安装 kafka
  12. Cross-lingual Document Retrieval using Regularized Wasserstein Distance
  13. 网吧用计算机性能配件清单,网吧组装电脑配置清单
  14. 计算机放音乐声音小在吗调,笔记本外放声音太小怎么办?-电脑教程
  15. 备份路由器配置文件到服务器,教你如何备份路由器配置文件
  16. 房产抵押贷款利率划算吗
  17. Android应用程序开发——创建应用程序
  18. python3 :习题40、习题41
  19. python打印Excel文件方法
  20. PBOC APDU命令解析

热门文章

  1. 开展project 正常的生活之路
  2. Linux基本网路配置及软件包的安装
  3. [转]NUnit详细使用方法
  4. 解决Ubuntu18.04下Qt中无法输入中文的问题
  5. Golang之 ==和deepEqual
  6. SMGP3.0协议的概念知识
  7. 未能使用“Csc”任务的输入参数初始化该任务
  8. 《第1集:机器学习的动机与应用》
  9. real6410 裸机实验- LED
  10. 浅析何时进行概况分析