MFC中的对话框可不可以两个对话框同时存在并且工作?

我需要编写一个程序,打开一个子对话框后,子对话框上的控件能正常工作,同时,母对话框(也就是主程序)上的控件同样正常工作?
但是我调用子程序的Domodal()函数以后,母对话框总是挂起的,我该怎么办?

5个回答

不要用doModal,用create创建
//百度一下。。。
首先你要在资源面板添加一个对话框,假设ID为IDD_DIALOG1,类为CTestDlg
则可以用指针的方式创建:
CTestDlg* dlg;
dlg = new CTestDlg;
dlg->Create(IDD_DIALOG1); //非模态对话框ID号
dlg->ShowWindow(SW_SHOW);

smallboxes
smallboxes 回复看得到你的人头: 谢谢,非常管用
大约 4 年之前 回复
qq_27587417
看得到你的人头 设置新建的对话框父窗口为桌面 dlg->Create(IDD_DIALOG1,GetDesktopWindow()); //非模态对话框ID号
大约 4 年之前 回复
smallboxes
smallboxes 我的应用中,子对话框是作为一个单独的控制面板存在的(始终前置),但问题是,当我把母对话框最小化的时候,子对话框也跟着最小化了。而当我点击自对话框上的控件,母对话框也跟着前置了,这不符合我的要求,我只需要子对话框一直前置,母对话框通常是隐藏的
大约 4 年之前 回复
smallboxes
smallboxes 我已经这样做了,确实实现了两对话框同时显示。但是有一个问题没有解决,就是子对话框不能单独的进行最小化和最大化:当我在主对话框点击最小化的时候,子对话框也被最小化。
大约 4 年之前 回复

可以去知乎上面或者github上面有

对话框分模态对话框(Modal)和非模态对话框,你说的那种对话框属于模态对话框,你创建一个非模态对话框好了(应该是创建窗口的时候设置某个参数,查一下API的说明文档)

Domodal创建的是模态对话框,创建非模态的对话框就可以两个对话框之间切换了

模态和非模态的区别是因为,模态框,将消息循环局部化,简单说,从一个大圈进入了一个小圈,可以认为是两个while循环的嵌套,按照你的想法,
你希望弹出的模态框在弹出窗口时,父模态框能活动,就很简单了,只要让你后面弹出的窗口,不是模态框就行。 简单说就是一个模态窗口弹出一个非模态的窗口。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐