`
wo_deqing
  • 浏览: 64227 次
文章分类
社区版块
存档分类
最新评论

MFC 非模态对话框

 
阅读更多

非模态对话框


用MFC可以创建非模态的对话框,只是创建方式不同,模态对话框用 dlg.DoModel()调用,而非模态对话框要用create函数创建调用。
/*假设IDD_TEST_DLG为已经定义的对话框资源的ID号*/

CTestDlg *dlg=new CTestDlg;
dlg->Create(IDD_TEST_DLG,NULL);
dlg->ShowWindows(SW_SHOW);
在上面的代码中我们新生成了一个对话框对象,而且在退出函数时并没有销毁该对象。因为如果此时销毁该对象(对象被销毁时窗口同时被销毁),而此时对话框还在显示就会出现错误。那么这就提出了一个问题:什么时候销毁该对象。可以用如下方法:

在对话框退出时销毁自己:在对话框中重载OnOK与OnCancel在函数中调用父类的同名函数,然后调用DestroyWindow()强制销毁窗口,在对话框中映射WM_DESTROY消息,在消息处理函数中调用delete this;强行删除自身对象。相关代码如下:
void CTestDlg1::OnOK()
{
CDialog::OnOK();
DestroyWindow();
}

void CTestDlg1::OnCancel()
{
CDialog::OnCancel();
DestroyWindow();
}

void CTestDlg1::OnDestroy()
{
CDialog::OnDestroy();
delete this;
}
分享到:
评论

相关推荐

    MFC模态对话框和非模态对话框

    在Windows应用程序开发中,Microsoft Foundation Class (MFC)库提供了一种高效且便捷的方式来创建用户界面,其中包括模态对话框和非模态对话框。这两种对话框在不同的场景下各有其用途,理解它们的工作原理和使用...

    MFC 非模态对话框教程

    在MFC(Microsoft Foundation Classes)框架中,非模态对话框(Modeless Dialogs)是一种允许用户与对话框和其他窗口同时交互的界面元素。对于新手程序员来说,理解非模态对话框的创建和管理可能会有些复杂,但只要...

    MFC模态 非模态对话框 ARX2008+VS2005

    结合Visual Studio 2005(VS2005)的Microsoft Foundation Classes (MFC),我们可以构建强大的用户界面,其中包括模态和非模态对话框。下面将详细解释这两个概念以及如何在ARX2008+VS2005环境下实现它们。 1. **...

    mfc中模态、非模态对话框与主对话框之间的数据交换

    点击运行弹出一个对话框,点击DIALOG1按钮弹出一个模态对话框,在该对话框的编辑框输入文本点击确定该对话框消失且输入的文本被显示到主对话框MainDialog中,点击DAILOG2按钮弹出一个非模态对话框,操作现象和模态...

    VS2010+MFC 模态对话框、非模态对话框的显示与打开以及对话框的之间的数据传递

    在本文中,我们将深入探讨如何在VS2010中使用MFC实现模态对话框(Modal Dialog)和非模态对话框(Modeless Dialog)的显示与打开,以及它们之间的数据传递。 首先,模态对话框是一种阻止用户与应用程序其他部分交互...

    详解VC++模态对话框和非模态对话框

    在VC++中,MFC(Microsoft Foundation Classes)框架提供了两种主要的对话框类型:模态对话框和非模态对话框。这两种对话框在程序执行流程和用户交互方面有着显著的区别。 模态对话框(Modal Dialog Box)是通过...

    MFC模态与非模态对话框的创建

    总之,MFC中的模态对话框和非模态对话框为用户提供了一种交互式界面,用于输入数据、显示信息或进行特定操作。理解它们的区别和创建过程是开发MFC应用程序的关键技能之一。通过熟练运用这些技术,开发者可以构建出...

    MFC多线程创建非模态对话框(防止一闪而逝)

    在本示例中,我们将讨论如何在MFC环境中创建一个非模态对话框,并通过多线程防止其“一闪而逝”的现象。 首先,我们要理解“一闪而逝”的问题。通常,当在主对话框的单击事件中直接创建并显示一个新的非模态对话框...

    MFC学习之模态对话框和非模态对话框

    通过学习和实践这个基于MFC的模态和非模态对话框示例,你可以更好地掌握MFC应用程序的用户界面设计,了解如何有效地与用户进行交互。对于MFC开发人员而言,熟练掌握对话框的使用将极大地提高开发效率和用户体验。

    模态对话框和非模态对话框创建和使用VS2010/MFC

    在Microsoft Visual Studio 2010 (VS2010) 中,MFC(Microsoft Foundation Classes)库提供了创建和管理用户界面元素的功能,其中包括模态对话框和非模态对话框。这两种对话框在Windows应用程序开发中扮演着重要的...

    VC中模态对话框和非模态对话框的编程

    ### VC中模态对话框和非模态对话框的编程 #### 一、概述 对话框(Dialog)作为Windows应用程序中频繁使用的元素之一,主要用于接收用户的输入信息。在MFC框架下,对话框的功能被封装在`CDialog`类中,这是一个从`...

    MFC模态对话框与非模态对话框

    MFC中经常会用到弹出模态或非模态对话框,模态对话框与非模态对话框容易混淆

    MFC中如何创建一个非模态对话框

    在MFC(Microsoft Foundation Class)库中,创建一个非模态对话框与创建一个模态对话框存在一些本质的不同。非模态对话框可以同时与多个窗口进行交互,用户在关闭对话框之后仍然可以继续操作父窗口,而非模态对话框...

    非模态主、从对话框数据传输(图文并茂+代码)

    在Windows应用程序开发中,MFC...总的来说,理解和掌握非模态对话框的数据传输对于构建复杂的MFC应用程序至关重要。通过实践和分析提供的代码,你可以深入理解MFC中对象间通信的机制,并提升你的Windows编程技能。

    VS2010模态非模态对话框.rar

    - 子窗口向父窗口传递数据,非模态对话框可以通过成员函数或信号槽机制(如果使用了MFC的事件驱动编程模型)来传递,而模态对话框则通常在`EndDialog()`之前设置某个全局变量或成员变量,然后在`DoModal()`返回后...

    (VC++源代码)非模态对话框

    非模态对话框与模态对话框不同,在非模态对话框活动的同时,用户还可以在应用程序的其他地方工作,而模态对话框在其关闭之前,用户不能在同一个应用程序的其他地方工作。本代码将从主框架窗口创建一个简单的非模态...

    111非模态对话框_C++_非模态对话框_自动保存数据_

    在C++编程中,非模态对话框(Non-Modal Dialog Box)是一种常见的用户界面元素,它允许用户在对话框打开的同时与应用程序的其他部分进行交互。非模态对话框通常用于提供用户输入数据或者执行特定任务,而不阻止用户...

    MFC 加法计算器 + 非模态对话框 完整工程演示代码下载

    MFC 加法计算器 + 非模态对话框 完整工程演示代码下载 MFC 加法计算器 + 非模态对话框 完整工程演示代码下载 MFC 加法计算器 + 非模态对话框 完整工程演示代码下载 MFC 加法计算器 + 非模态对话框 完整工程演示...

    MFC 加法计算器 + 向导对话框+非模态对话框 完整工程演示代码下载

    MFC 加法计算器 + 向导对话框+非模态对话框 完整工程演示代码下载 MFC 加法计算器 + 向导对话框+非模态对话框 完整工程演示代码下载 MFC 加法计算器 + 向导对话框+非模态对话框 完整工程演示代码下载 MFC 加法...

    MFC 加法计算器+属性页对话框+非模态对话框 完整代码下载

    MFC 加法计算器+属性页对话框+非模态对话框 完整代码下载 MFC 加法计算器+属性页对话框+非模态对话框 完整代码下载 MFC 加法计算器+属性页对话框+非模态对话框 完整代码下载 MFC 加法计算器+属性页对话框+非模态...

Global site tag (gtag.js) - Google Analytics