怎样创建一个非模态对话框?

2025-02-27 14:50:19
推荐回答(5个)
回答1:

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

不过还是推荐把该对话框作为类成员变量或者全局变量,以避免内存泄露

回答2:

估计是因为你的非模态对话框的生命周期太短导致。
你用 new 来做就可以。比如你的非模态对话框类为CDlg,那么可以这样:

class A
{
CDlg* d;
void ShowD();
}

void A::ShowD()
{
d = new CDlg(...);
d.Create(...);
d.ShowWindow(...);
}

当然你得在某个合适的地方将d销毁, 即delete d;

回答3:

不能用局部变量,局部变量执行完就被析构掉了。只要你把变量改成全局的就行了。

也不建议用new来分配内存,因为你还得要delete掉,不然会内存泄漏。

回答4:

如果是类的话,你可以定义为成员变量,如果没有类你就把他定义为静态变量加一个static就ok了,更或者定义为全局变量也行

回答5:

那你要把它做成全局变量或者类的成员变量