关于动态创建对话框的问题,网上也有不少相关的文章,但大多都是大同小异
主要的关键是:
请看下面的两种不同的动态创建对话框
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中申请一块内存区,但要记得在对话框类的析构函数中释放该处的内存区,以免发生内存泄漏。
关于动态创建控件其实 道理是同样的 这里就不啰嗦了