第2章 MFC 与 Windows Object.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.2.4 MFC窗口的使用 MFC窗口类(CWnd的派生类) 框架类CFrameWnd,CMdiFrameWnd; 文档框架CMdiChildWnd; 视图Cview CView的派生视图: 列表CListView 编辑CEditView 树形列表CTreeView 支持RTF的CRichEditView 基于对话框的视CFormView 对话框CDialog 工具条CToolBar 状态条CStatusBar 控制窗口,如CList,CEdit,CComboBox,Cbutton等 使用方式: 直接使用 派生类 2.2.5 在MFC下窗口的销毁 窗口对象的定义和销毁方式 堆分配:使用new和delete操作符。 int * p; p=new int; … delete p; 栈分配:直接定义变量,自动调用构造和析构函数的分配方式。 void() { int m; … } 2.2.5 在MFC下窗口的销毁 1 CFrameWnd和CView的派生类 窗口关闭导致函数DestroyWindow被调用,进行窗口对象的销毁。 销毁窗口对象时,框架调用OnNcDestroy成员函数,该函数负责Windows清理工作,并在最后调用虚拟成员函数PostNcDestroy。PostNcDestroy调用delete this删除自身这个MFC窗口对象。 特别注意:这些窗口应在堆(Heap)中分配,且不要对这些对象使用delete操作。 通俗地说:这类窗口必须使用new操作创建对象,同时它们有具有自销毁功能,不必使用delete删除。 2.2.5 在MFC下窗口的销毁 2 Windows 控件 析构函数调用DestroyWidnow销毁窗口。 如果在栈中分配这样的窗口对象,则在超出作用范围的时候,随着析构函数的调用,MFC窗口对象和它的Windows window对象都被销毁。 如果在堆Heap中分配,则窗口关闭后,必须调用delete操作符,导致析构函数的调用和窗口的销毁。 建议这种窗口在栈中分配,避免用额外的代码来销毁窗口。 如前述CMainFrame的成员变量m_wndStatusBar和m_wndToolBar。 2.2.5 在MFC下窗口的销毁 3 用户自定义的CWnd派生的窗口 程序员可以在派生类中实现上述两种机制之一,然后,在相应的规范下使用。 自动销毁机制 窗口关闭时调用 DestroyWindow函数 这些窗口应在堆(Heap)中分配,且不要对这些对象使用delete操作销毁。 析构函数销毁机制 在析构函数内调用 DestroyWindow函数 这些窗口对象具有C++对象特征。可按C++对象使用规范任意使用。 第2章 Windows Object 2.1 MFC Object和Windows Object 2.2 Windows Object 2.3 设备描述表 2.4 GDI对象 2.1 MFC Object和Windows Object的关系 Windows Object(Windows对象) Win32下用句柄表示的Windows操作系统对象 如:窗口、控件、消息、画笔、刷子等 MFC Object(MFC对象) 指封装Windows Object的C++ 对象 用MFC类表示 如CWnd、Cbutton等 表示 2.1 MFC Object和Windows Object的关系 MFC Object和Windows Object的关系 2.1 MFC Object和Windows Object的关系 (1) 数据结构不同 MFC Object是MFC或者用户自定义的C++类的实例; Windows Object是Windows系统的内部数据结构,通过一个句柄来引用; MFC类定义一个成员变量保存对应的窗口对象句柄。 (2)二者所处的层次不同 MFC Object是高层的,Windows Object是低层的。 MFC Object封装了Windows Object的功能,使用者不需要直接应用句柄和 API。 2.1 MFC Object和Windows Object的关系 (3)创建方法不同 MFC 对象由程序直接创建; 窗口对象由SDK函数创建。 使用MFC Object的一般步骤: 创建一个MFC Object 调用MFC Object的成员函数创建相应的Windows Object (4) 二者的互相转换 从MFC Object得到对应的Windows Object的句柄; GetSafeHandle。 从Windows Object创建MFC Object; Attach或者FromHandle 2.1 MFC Object和Windo

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档