CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

void CFrameWnd::PostNcDestroy()中的一个问题

楼主flypigluo(luo)2005-08-03 11:40:22 在 VC/MFC / 基础类 提问

//CFrameWnd::PostNcDestroy()中的代码如下,  
   
  void   CFrameWnd::PostNcDestroy()  
  {  
    delete   this;  
  }  
   
  //我的疑问就是   为什么要delete   this     ??????这是干吗,要释放的在析构函数里释放了吗???  
   
  我们平时自己写的非窗口类不是也有this指针吗?     我们根本就没去delete   该指针  
   
  问题点数:20、回复次数:3Top

1 楼modena(非云)回复于 2005-08-03 11:46:44 得分 7

CFrameWnd窗口需要维持于整个进程的生存周期,在APP的InitInstance中new,没有地方被释放  
  所以在这里被释放  
   
  类似的做法:无模式对话框的释放Top

2 楼iGray(i_冲锋陷阵)回复于 2005-08-03 12:39:12 得分 7

new出来的需要有一个delete来释放,他们是一对对出现的。  
   
  如楼上所说,CFrameWnd是在APP的InitInstance中new出来的,PostNcDestroy用来执行窗口消毁后最后的清理工作,通常是释放这样new出来的东西和涉及到句柄类的系统资源Top

3 楼orbit(走了走了)回复于 2005-08-03 12:59:51 得分 6

delete   this会引起析构函数的调用  
   
  所有的class都有this指针,不光是窗口类  
   
  CFrameWnd是New出来的,所以可以这样用,创建在栈或全局数据区的变量不能这样用  
   
  PostNcDestroy是CWnd的虚函数,在窗口完全销毁候被调用,通过delete   this可以释放这个窗口对象,非MFC的窗口类不能这样用PostNcDestroyTop

相关问题

  • void
  • 如何在CFrameWnd类中加入。。。
  • void* void**
  • 为什么想在CFrameWnd中画背景重载OnEraseBkGround不行
  • 请问在CFrameWnd中 如何 访问到CView 或是CDocument
  • 我问你答:在CFrameWnd类中,oncreate()与oncreateclient的区别!?
  • 如何在从CFrameWnd继承下来的窗口中创建BUTTON?
  • 非模态对话框在PostNcDestroy()中delete this报错
  • vc中的函数void des_ecm(const void *i_blk, void *o_blk, void *key)如何在VB中声明?
  • 救命啊!CFrameWnd

关键词

  • 指针
  • postncdestroy
  • cframewnd
  • 释放
  • 类
  • delete

得分解答快速导航

  • 帖主:flypigluo
  • modena
  • iGray
  • orbit

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo