关于CView销毁过程的问题

LL596214569 2018-07-25 07:11:57
第一步,我建立了一个非模态对话框dialogA;
然后在dialogA上添加了一些控件,比如static text,这个主要是为了排版没有实际意义;
然后我再建立一个对话框,dialogB,并且将刚才在A上建立的static text作为dialogB的父窗口,
最后我在dialogB上建立了一个cview。
现在我在将dialogA关闭的时候,在程序走到dialogA的析构函数时,civew就已经析构了 ,
我想知道这个析构过程是怎么样的,在对dialogA进行析构时还需要管理cview吗,
求大神赐教
...全文
206 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LL596214569 2018-07-31
  • 打赏
  • 举报
回复
引用 6 楼 jiangsheng 的回复:
是啊,CView::PostNcDestroy里面就有自毁代码,要想它不自毁的话就要重写。

CView里面还有一大堆GetParentFrame的代码,比如OnMouseActivate的时候SetActiveView,要在对话框里用也得重写掉的。

嗯嗯 我看了一下,在CVIEW与CFrameWnd中都重写了PostNcDestroy,所以这两个就是所谓的自动清理类,Cwnd中的PostNcDestroy并没有delete this语句,所以需要手动处理,学到了,谢谢大神,结贴给分
蒋晟 2018-07-30
  • 打赏
  • 举报
回复
是啊,CView::PostNcDestroy里面就有自毁代码,要想它不自毁的话就要重写。

CView里面还有一大堆GetParentFrame的代码,比如OnMouseActivate的时候SetActiveView,要在对话框里用也得重写掉的。
LL596214569 2018-07-30
  • 打赏
  • 举报
回复
引用 4 楼 jiangsheng 的回复:
CView会在PostNCDestroy那里把自己删掉。参考TN017: Destroying Window Objects

可我的CView并没有重写PostNcDestroy呢?
TN017上似乎是说CView是在堆中分配会自动清除,是不是说当我没有为其添加PostNcDestroy 时会在程序结束时或是他的父窗口析构时系统将其自动清理吗??
蒋晟 2018-07-30
  • 打赏
  • 举报
回复
CView会在PostNCDestroy那里把自己删掉。参考TN017: Destroying Window Objects
LL596214569 2018-07-30
  • 打赏
  • 举报
回复
引用 2 楼 VisualEleven 的回复:
你的civew在代码中是用new的方式分配空间的吗?

是的,new的一个新的view
Eleven 2018-07-30
  • 打赏
  • 举报
回复
你的civew在代码中是用new的方式分配空间的吗?
LL596214569 2018-07-26
  • 打赏
  • 举报
回复
自己顶一顶,求大佬啊~~

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧