非模态对话框的几个问题

基于单个对话框的mfc编程。CDlg是一个对话框类。在主对话框中建立对话框:问题1:CDlgdlg;dlg.Create(ID,this);dlg.ShowWindow(... 基于单个对话框的mfc编程。CDlg是一个对话框类。
在主对话框中建立对话框:
问题1:
CDlg dlg;
dlg.Create(ID,this);
dlg.ShowWindow(SW_SHOW);
------------------------和
CDlg* dlg=new CDlg;
dlg->Create(ID,this);
dlg->ShowWindow(SW_SHOW);
两种方法有什么不一样?
第一种方法分配内存了吗?关闭第二个对话框时要不要delete this?
问题2:
CDlg* dlg=new CDlg;
dlg->Create(ID,this);
dlg->ShowWindow(SW_SHOW);
------------------------和
CDlg dlg;
dlg->Create(ID,this);
dlg->ShowWindow(SW_SHOW);
有什么不一样?第二种要不要delete this?
问题三:
能不能在第二个对话框中向主对话框传递变量值?怎么做呢?
问题2第二个方法,有误,是CDlg* dlg;
-----------------------
第3个问题,怎样传递变量呢?
子对话框实在主对话框中建立的,那么主-》子对话框是很容易传递变量值的。dlg->变量名。对吧。
我的问题是在子对话框下怎样实现:子-》主对话框传递变量值?在子对话框下怎样找到主窗口的指针或句柄呢?
展开
 我来答
stone_dongdong
2009-06-04 · TA获得超过2853个赞
知道大有可为答主
回答量:1636
采纳率:0%
帮助的人:1019万
展开全部
问题1:
都分配了,
第一个是栈内存,函数体执行完成,窗口自动被关闭,所以根本显示不出来窗口,只是闪一下就被关掉(除非CDlg dlg; 放在主对话框类定义里面);
第二个是堆内城,对话框可一直显示,需要使用 delete dlg;才能关闭对话框。

问题2: 同问题一,一个是在堆空间,一个是栈空间,你编码试试就知道了。new 分配的需要 delete dlg;

问题3:2种方法都可以传递变量,但必须保证此对话框实体没有被释放,栈分配的那个定义成类的成员变量就可以了,一样使用。
paniclp
2009-06-05 · TA获得超过232个赞
知道小有建树答主
回答量:700
采纳率:0%
帮助的人:431万
展开全部
效果一样,但是
new的一定要delete不然有内存泄漏

传参数
你可以在CDlg里面加上成员变量,然后通过构造函数传入参数
自己定义一下构造函数
CDlg(int x)
{
m_Param = x;
}

然后就可以直接用m_Param
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式