一个基于Dialog的MFC AppWizard应用程序,再Insert一个对话框,如何同时显示这两个对话框呢?

来源:百度知道 编辑:UC知道 时间:2024/05/10 04:51:03
其实这个问题很简单,想要在屏幕上同时显示两个对话框,并且这两个对话框都可以被激活,则至少第二个对话框应该为非模态对话框。启动非模态对话框的方法与启动一个普通窗口的步骤是一样的,即先调用窗口类的Create()函数创建一个窗口对象,再用ShowWindow()使之显示出来即可(值得注意的是:第二个对话框的对象不能为局部变量,否则在退出OnInitDialog时,该对象会被自动关闭,从而导致第二窗口也会关闭)。例如,下列的代码演示了如何在主对话框的OnInitDialog()中启动另一个非模态对话框。

CDialog2 Dlg2; //注意Dlg2不能为OnInitDialog的局部变量。
BOOL CDialog1::OnInitDialog()
{
CDialog::OnInitDialog();
Dlg2.Create(IDD_DIALOG2,this );
Dlg2.ShowWindow(SW_SHOW);
}

编译并运行,怎么样,结果是不是OK了?
这是我从网上弄过来的,但是发现不是OK了,而是有几个严重错误。谁能告诉我到底怎样才能做到两个对话框显示并进行信号的传递?
D:\调试\dayin\1205313\1205313Dlg.cpp(16) : error C2146: syntax error : missing ';' before identifier 'Dlg2'
D:\调试\dayin\1205313\1205313Dlg.cpp(16) : error C2501: 'CDialog2' : missing storage-class or type specifiers
D:\调试\dayin\1205313\1205313Dlg.cpp(16) : fatal error C1004: unexpected end of file found

可以被激活不代表同时被激活,1楼多虑了,如果都可以被激活,那应该不是至少第二个对话框为非模态,应该为两个都是非模态,如果第一个是DoModal显示的,那么他可能一直保有焦点

并且这两个对话框都可以被激活
根本不可能 就算是多任务的NT系统 它也不可能同时激活两个对话框

用DoModal当然不行,用Create创建,用ShowWindow不就可以了

我按你说的方法编译并运行确实ok了,并没有什么严重错误。
我的大致步骤:插入资源——对话框——添加对话框类——然后按楼主所说添加代码,记得要包含头文件。

不知道你说的“严重错误”是什么,为什么不发来看看