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

怎样在一个基于对话框的应用程序中创建一个非模态对话框?在函数内定义一个对话框类的对象,用Create创建,用ShowWindow显示。关键它是局部变量,一闪就没了,怎么解... 怎样在一个基于对话框的应用程序中创建一个非模态对话框?
在函数内定义一个对话框类的对象,用Create创建,用ShowWindow显示。
关键它是局部变量,一闪就没了,怎么解决这个问题?
展开
 我来答
_baby小人_
2010-08-24 · TA获得超过253个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:252万
展开全部
首先你要在资源面板添加一个对话框,假设ID为IDD_DIALOG1,类为CTestDlg
则可以用指针的方式创建:
CTestDlg* dlg;
dlg = new CTestDlg;
dlg->Create(IDD_DIALOG1); //非模态对话框ID号
dlg->ShowWindow(SW_SHOW);

不过还是推荐把该对话框作为类成员变量或者全局变量,以避免内存泄露
无尽星空ljm
2010-08-24 · TA获得超过1793个赞
知道小有建树答主
回答量:441
采纳率:0%
帮助的人:0
展开全部
估计是因为你的非模态对话框的生命周期太短导致。
你用 new 来做就可以。比如你的非模态对话框类为CDlg,那么可以这样:

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

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

当然你得在某个合适的地方将d销毁, 即delete d;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幸巴达
2010-08-24 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6953
采纳率:38%
帮助的人:2436万
展开全部
不能用局部变量,局部变量执行完就被析构掉了。只要你把变量改成全局的就行了。

也不建议用new来分配内存,因为你还得要delete掉,不然会内存泄漏。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
451144426
2010-08-24 · TA获得超过688个赞
知道小有建树答主
回答量:404
采纳率:0%
帮助的人:267万
展开全部
如果是类的话,你可以定义为成员变量,如果没有类你就把他定义为静态变量加一个static就ok了,更或者定义为全局变量也行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gamespy1991
2010-08-24 · TA获得超过1262个赞
知道小有建树答主
回答量:1636
采纳率:0%
帮助的人:1209万
展开全部
那你要把它做成全局变量或者类的成员变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式