子对话框的创建与销毁

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2445747.html

(0)
上一篇 2025年3月3日 16:13:33
下一篇 2025年3月3日 16:13:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • C++静态成员与常成员的使用

    1、 实验目的 (1)学习静态成员的使用 (2)学习常成员的使用 (3)掌握静态数据成员与常数据成员的初始化 2、实验内容 (1)某商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,因此,商店需要记录下目…

    2025年3月3日
    200
  • 用C++对C++语法格式进行分析

    前言 最近c++项目需要用到脚本,这就关系到如何绑定对象到脚本运行环境。因使用到多套脚本语言,所以现有的绑定技术,都不能满足需求。所以只能寻求解析c++的头文件,再根据描述进行绑定。起初发现boost有一套,但boost实在太臃肿了,对项目…

    编程技术 2025年3月3日
    200
  • C# 如何调用 C++ DLL中的函数接口和回调函数

    1、c#中大部分基本数据类型都和c++的基本数据类型相同,因此基本数据类型的转换比较简单,需要注意的就是字节大小。 2、c++数组和c#的数组转换需要注意的就是需要注意,需要增加声明如[marshalas(unmanagedtype.byv…

    编程技术 2025年3月3日
    200
  • c++中向任意目录下写文件

    今天遇到了在c盘的子目录下写文件出错的事情,最中自己实验后解决。小小记录一下。 代码如下: #include#include#include main(){ int data[35]; int n=35,temp; for(int i=0;…

    2025年3月3日
    200
  • C#实现一个最简单的HTTP服务器

     简介   本文用c#实现了一个最简单的http服务器类,你可以将它嵌入到自己的项目中,或者也可以阅读代码来学习关于http协议的知识。  背景   高性能的WEB应用一般都架设在强大的WEB服务器上,例如IIS, Apache, 和Tom…

    编程技术 2025年3月3日
    200
  • C# 程序员最常犯的 10 个错误

     关于C#   c#是达成微软公共语言运行库(clr)的少数语言中的一种。达成clr的语言可以受益于其带来的特性,如跨语言集成、异常处理、安全性增强、部件组合的简易模型以及调试和分析服务。作为现代的clr语言,c#是应用最为广泛的,其应用场…

    编程技术 2025年3月3日
    200
  • C#的未来计划

     在ndc london上,mads torgersen提出了对未来c#语言的的计划。需要注意的是,这些只是计划,不会保证在哪个版本发布。damien guard对这些建议进行了总结和简要的分析,我们在此为您挑选了其中的一些内容。  只读属…

    编程技术 2025年3月3日
    200
  • C# 的三种序列化方法

      序列化是将一个对象转换成字节流以达到将其长期保存在内存、数据库或文件中的处理过程。它的主要目的是保存对象的状态以便以后需要的时候使用。与其相反的过程叫做反序列化。   序列化一个对象   为了序列化一个对象,我们需要一个被序列化的对象,…

    编程技术 2025年3月3日
    200
  • 理解模型,视图和控制器(C#,asp.net)

     这篇文章向你提供asp.net mvc 模型,视图和控制的高度概览。换句话说,解释一下asp.net mvc中的 ‘m’, ‘v’, 和 ‘c’。   看完这篇文章以后,你应该就能理解ASP.NET MVC的不同部分是如何共同工作的。而且…

    2025年3月3日 编程技术
    200
  • 能让你成为更优秀程序员的10个C语言资源

    一些人觉得编程无聊,一些人觉得它很好玩。但每个程序员都必须紧跟编程语言的潮流。大多数程序员都是从c开始学习编程的,因为c是用来写操作系统、应用程序最常用的语言。 C编程笔记 这些是华盛顿实验学院C编程入门课的部分笔记。它们是以《C程序设计语…

    编程技术 2025年3月3日
    200

发表回复

登录后才能评论