关于动态创建对话框的问题,网上也有不少相关的文章,但大多都是大同小异
主要的关键是:
请看下面的两种不同的动态创建对话框
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中申请一块内存区,但要记得在对话框类的析构函数中释放该处的内存区,以免发生内存泄漏。
关于动态创建控件其实 道理是同样的
本文对比了两种创建对话框的方法,一种是通过局部对象创建,另一种是通过动态分配内存创建。前者因作用域限制无法正常显示,后者则需注意内存管理以避免泄漏。
888

被折叠的 条评论
为什么被折叠?



