关于动态创建对话框以及动态创建控件

来源:互联网 发布:3d房屋设计软件 编辑:程序博客网 时间:2024/05/29 18:33

关于动态创建对话框的问题,网上也有不少相关的文章,但大多都是大同小异 

主要的关键是:

     请看下面的两种不同的动态创建对话框

1.  CDialog Dlg;

     Dlg.Create(IDD_DIALOG);

     Dig.ShowWindow(SW_SHOW);

2.  CDialog*  Dlg=new CDialog;

     Dlg->Create(IDD_DIALOG);

     Dlg->ShowWindow(SW_ShowWindow);

 

1动态创建的对话框是不能显示出来的,而2动态创建的对话框是能够显示出来的。

 

为什么会是这样的情况?答案其实很简单 

因为1中CDialog Dlg;是一个定义的一个局部对象,在它所处的函数模块范围内,随着函数的执行完毕,起局部对象也会随着消失。所以我们要在2中申请一块内存区,但要记得在对话框类的析构函数中释放该处的内存区,以免发生内存泄漏。

 

关于动态创建控件其实 道理是同样的 

0 0