![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
非模态对话框:
CShuXSheet的基类是CPropertySheetCShuXSheet*pDlg=newCShuXSheet("非模态属性表单");pDlg->Create();以...
CShuXSheet的基类是CPropertySheet
CShuXSheet *pDlg = new CShuXSheet("非模态属性表单");
pDlg->Create();
以上这种方式创建非模态对话框没有问题
CShuXSheet pDlg("非模态属性表单");
pDlg.Create();
这种方法创建的非模态对话框一闪就消失了
为什么会这样?难道栈和堆的原因? 展开
CShuXSheet *pDlg = new CShuXSheet("非模态属性表单");
pDlg->Create();
以上这种方式创建非模态对话框没有问题
CShuXSheet pDlg("非模态属性表单");
pDlg.Create();
这种方法创建的非模态对话框一闪就消失了
为什么会这样?难道栈和堆的原因? 展开
2个回答
展开全部
这个问题,与栈和堆有点关系。
执行pDlg.Create()之后,对话框被创建,然后程序接着往下面走,走出了当前函数后,pDlg就走出作用域,消失掉了,被析构了(因为它不是指针),所以会看不到。
而是用指针的话,执行过程走出函数之后,只有pDlg指针消失掉,而指针指向的对话框对象,还保留在heap中,没有被析构,所以还能看见。
执行pDlg.Create()之后,对话框被创建,然后程序接着往下面走,走出了当前函数后,pDlg就走出作用域,消失掉了,被析构了(因为它不是指针),所以会看不到。
而是用指针的话,执行过程走出函数之后,只有pDlg指针消失掉,而指针指向的对话框对象,还保留在heap中,没有被析构,所以还能看见。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询