2 zhaojuntaow zhaojuntaow 于 2013.12.09 16:11 提问

MFC中对话框关闭问题(模态和非模态均可)

我在主对话框中添加的菜单,单击菜单项弹出一个新的对话框,(主对话框和新对话框是两个不同的类),现在想关闭新对话框,要怎么做呢?

1个回答

qq2399431200
qq2399431200   2014.01.02 15:58
已采纳

问题能说清楚点吗?
如果新对话框上面有关闭按钮"X"或是已经设计了“确定”按钮、“退出”按钮,用这三个方法都可以关闭新的对话框。当然WM_CLOSE、OnOk、OnCancel都必须实现或是使用新对话框上默认的。
如果想通过主对话框关闭新对话框,可以在新对话框生成前设置一个定时器,当达到一定的时间后在定时器的回调函数中调用“::SendMessage(新对话框的hWnd,WM_CLOSE,0,0);”来关闭新对话框。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
mfc MFC 关闭非模态对话框 与 模态对话框
 首先模态对话框的创建: CDialog* dlg = new CDialog(......); dlg.DoModal(); 非模态对话框创建则按照msdn上写的用Create函数创建; 对于两种对话框关闭的问题: 先说下模式对话框调用的原则。(就是一定要先关了这个对话框才能操作后面窗口的对话框) 在模式对话框下,用CDialog::OnOK()或CDialog::OnCan
VC模态和非模态对话框关闭过程
非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下 MSDN 的原文:When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from within it. Don’t call the base clas
MFC非模态对话框和模态对话框销毁的方法
-
<MFC>模态对话框和非模态对话框的创建弹出
一、模态对话框的创建及显示 1、Windows对话框分为两类:模态对话框和非模态对话框。     模态对话框:当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。 非模态对话框:它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。   2、模态对话框的弹出
MFC 创建非模态对话框和销毁过程
今天项目中遇到的问题,记录下来,做个总结。 一个简单的目的是创建一个非模态对话框并在对话框关闭后将其销毁。 这里的销毁包括:销毁对话框对象资源和对话框对象指针; 首先说创建对话框: 一、模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。 点击模态对话框中的OK按钮,模态对话框会被销
mfc关闭模态dialog的正确方式
在模态对话框中: 正常的用户触发的OnOK 、OnCancel消息都是通过调用函数EndDialog去关闭模态对话框的,EndDialog函数并不立即清除对话框。而是设置一个标志,并且允许对话框应用程序把控制权返回系统。系统在试图从应用程序队列检索下一个消息之前检测标志。如果已经设置了标志则系统中止消息循环,清除对话框,所以当我们想在代码中去调用EndDialog函数去结束对话框,最后再释放对话
关于模态对话框和非模态对话框的创建、显示,以及和父对话框的传值
当然网上关于这方面的技术博文非常多,此处我只是进行一下小记,再加一点自己的体会,方便以后查询。一、模态对话框 1.创建及显示 模态对话框是一种阻塞式的对话框,即没有处理完该对话框,不能对其他地方进行操作。比如我自己项目中药输入网络流的播放url的那种对话框。它的创建很简单。Curl_File dlg; if (dlg.DoModal()==IDOK) { //d
MFC中模态对话框详解
模态对话框 在涉及GUI程序开发的过程中,常常有模态对话框以及非模态对话框的概念模态对话框:在子界面活动期间,父窗口是无法进行消息响应。独占用户输入 非模态对话框:各窗口之间不影响主要区别:非模态对话框与APP共用消息循环,不会独占用户。 模态对话框独占用户输入,其他界面无法响应在用户层的主要逻辑如下: TestDlg dlg;if (dlg.DoModal() == IDOK) {
MFC 非模态对话框
 非模态对话框 用MFC可以创建非模态的对话框,只是创建方式不同,模态对话框用 dlg.DoModel()调用,而非模态对话框要用create函数创建调用。/*假设IDD_TEST_DLG为已经定义的对话框资源的ID号*/CTestDlg *dlg=new CTestDlg;dlg->Create(IDD
非模态对话框的创建和关闭
CXXDlg * dlg = new CXXDlg; dlg->Create(IDD_XXX,this);