MSDN上写这样那DestroyWindow是个destructor吗??

CHHuang 2004-12-23 01:44:13
Construction/Destruction

CWnd Constructs a CWnd object.

DestroyWindow Destroys the attached Windows window.

MSDN上写这样那DestroyWindow是个destructor吗??
...全文
104 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2004-12-23
  • 打赏
  • 举报
回复
先销毁窗口,然后在析构
寻开心 2004-12-23
  • 打赏
  • 举报
回复
CWnd不一定是主窗口,也不一定是CFrameWnd创建的

它只是一个窗口的类而已

这两篇文章对初学者比较有帮助,或者看VC++技术内幕那本书

http://www.csdn.com.cn/program/4196.htm
http://www.copathway.com/vchelp/zteach/mfc_s2.asp?type_id=114&class_id=1&cata_id=14&article_id=900&search_term=
blhy 2004-12-23
  • 打赏
  • 举报
回复
实际上是这样的,DestroyWindow是MFC提供给程序员调用CWnd析构函数的地方。只有你的主窗口是从CWnd类继承的才需要重写这个函数,并在里面显示调用delete this;这将让主窗口在销毁时能调用主窗口类的析构函数,因为你在创建这个窗口对象时是在堆上创建的。是DestroyWindow调用~CWnd(),而不是~CWnd()调用DestroyWindow().如果你的主窗口是从CFrameWnd派生的,就用不着这样做了,因为CFrameWnd已经帮你做了。
jsblcg 2004-12-23
  • 打赏
  • 举报
回复
搂主弄混了层次了,DestroyWindow是Windows接口,与CreateWindow等均是与HWND关联的API,
而析构函数是C++语法的东西。虽然Windows确实是按面向对象的思路设计的,
MFC的CWnd又是C++对Windows窗口API的封装,但两者属于不同的系统。

CWnd终结时有两件事要做,一是关闭与CWnd对象关联的Windows窗口(以m_hWnd表示),一是销毁自己。前者MFC希望程序员自己做,因为通常窗口关闭时需要做些结束处理,通常是由OnClose响应WM_CLOSE消息做这些(最终是通过调用DestroyWindow实现)。如果程序员忘了(结束处理不完善所致),CWnd的析构函数~CWnd会调用DestroyWindow来做这事。不过它会给你一个警告,告诉你结束处理可能有问题,警告内容就是楼主的帖子了。
yjh1982 2004-12-23
  • 打赏
  • 举报
回复
只是销毁一个窗口而已
CHHuang 2004-12-23
  • 打赏
  • 举报
回复
那Destruction的意思是??
不是destructor而是Destroy啰!!
是吗??
Destruction动作是透过DestroyWindow函式去 Destroys the attached Windows window.
是吗??
r_swordsman 2004-12-23
  • 打赏
  • 举报
回复
析构函数不是你调用的~~你调用的一定不是析构函数~~~~~~` :)
寻开心 2004-12-23
  • 打赏
  • 举报
回复
用c++当中对象的思想完整理解CWnd是比较麻烦的

建议你找一本win32编程的书籍看看
看完整的一个窗口的创建和删除过程就清楚了
寻开心 2004-12-23
  • 打赏
  • 举报
回复
不是
DestroyWindow是一个窗口被删除之前的要处理的一个步骤
只有进行了这个调用之后,才可以去删除这个窗口
它并不是真正的析构函数

实际上的完成处理流程是

CWnd * pWnd = new CWnd(); // 构造对象
pWnd->Create(。。。。。); // 创建它
pWnd->ShowWindow(); // 显示它
....
pWnd->DestroyWindow(); // 删除pWnd当中的用户自己内部构造的对象的地方
....
delete pWnd; // 这里才是析构调用的地方,但是在这个时候一定是DestroyWindow已经被调用后的了

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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