首先你要在资源面板添加一个对话框,假设ID为IDD_DIALOG1,类为CTestDlg
则可以用指针的方式创建:
CTestDlg* dlg;
dlg = new CTestDlg;
dlg->Create(IDD_DIALOG1); //非模态对话框ID号
dlg->ShowWindow(SW_SHOW);
不过还是推荐把该对话框作为类成员变量或者全局变量,以避免内存泄露
估计是因为你的非模态对话框的生命周期太短导致。
你用 new 来做就可以。比如你的非模态对话框类为CDlg,那么可以这样:
class A
{
CDlg* d;
void ShowD();
}
void A::ShowD()
{
d = new CDlg(...);
d.Create(...);
d.ShowWindow(...);
}
当然你得在某个合适的地方将d销毁, 即delete d;
不能用局部变量,局部变量执行完就被析构掉了。只要你把变量改成全局的就行了。
也不建议用new来分配内存,因为你还得要delete掉,不然会内存泄漏。
如果是类的话,你可以定义为成员变量,如果没有类你就把他定义为静态变量加一个static就ok了,更或者定义为全局变量也行
那你要把它做成全局变量或者类的成员变量