MFC和Win32分析和总结.docxVIP

  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文档。上传文档
查看更多
MFC MFC 和 Win32 MFC Object 和 Windows Object 的关系 MFC MFC 中最重要的封装是对 Win32 API 的封装,因此,理解 Windows 用句柄表示的 Windows 操作系统对象;所谓MFC Object (MFC 对象)是一个MFC 窗口对象Object 和 MFC Object (C++对象,一个 C++类的实例)之间的关系是理解MFC 的关键之一。所谓 用句柄表示的 Windows 操作系统对象;所谓MFC Object (MFC 对象)是 一个MFC 窗口对象 C++对象,是一个 C++对象,是一个C++类的实例,这里(本书范围内)MFC Object 是有 特定含义的,指封装 Windows Object 的 C++ Object,并非指任意的 C++ Object。 MFC MFC Object 和 Windows Object 是不一样的,但两者紧密联系。以窗口 对象为例: 随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。而 随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。而 Windows 窗口则是 Windows 系统的一个内部数据结构的实例,由一个 是一个 C++ CWnd类(或派生类)的实例,是程序直接创建的。在程序执行中它“窗口句柄 是一个 C++ CWnd 类(或派生类)的实 例,是程序直接创建 的。在程序执行中它 窗口在 MFC 窗口对象创建之后,由 CWnd 类的 Create 成员函数创建, “窗口句柄” “窗口句柄”保存在窗口对象的 m_hWnd 成员变量中。Windows 窗口可以 被一个程序销毁,也可以被用户的动作销毁。MFC 窗口对象和 Windows 窗口对象的关系如图 2-1 所示。其他的 Windows Object 和对应的 MFC Object 也有类似的关系。 下面,对 下面,对 MFC Object 和 Windows Object 作一个比较。有些论断对设备 描述表(MFC 类是 CDC,句柄是 HDC)可能不适用,但具体涉及到时会指出。 从数据结构上比较1. 从数据结构上比较 MFC Object 是相应 C++类的实例,这些类是 MFC 或者程序员定 义的; 义的; Windows Object 是 Windows 系统的内部结构,通过一个句柄来引 用; 用; MFC 给这些类定义了一个成员变量来保存 MFC Object 对应的 Windows Object 的句柄。对于设备描述表 CDC 类,将保存两个 HDC HDC 句柄。 从层次上讲比较 MFC MFC Object 是高层的,Windows Object 是低层的; MFC Object 封装了 Windows Object 的大部分或全部功能,MFC Object 的使用者不需要直接应用 Object 的使用者不需要直接应用 Windows Object 的 HANDLE(句 柄)使用 Win32 API,代替它的是引用相应的 MFC Object 的成员 函数。 从创建上比较3. 从创建上比较 MFC Object 通过构造函数由程序直接创建;Windows Object 由相应的 SDK 函数创建。 MFC MFC 中,使用这些 MFC Object,一般分两步: 首先,创建一个 首先,创建一个 MFC Object,或者在 STACK 中创建,或者在HEAP 中创建,这时,MFC Object 的句柄实例变量为空,或者说不是一 个有效的句柄。 然后,调用 MFC Object 然后,调用 MFC Object 的成员函数创建相应的 Windows Object, MFC 的句柄变量存储一个有效句柄。 CDC(设备描述表类 CDC(设备描述表类)的创建有所不同,在后面的 2.3 节会具体说明 CDC 及其派生类的创建和使用。 当然,可以在 MFC Object 的构造函数中创建相应的 Windows 对 象,MFC 象,MFC 的 GDI 类就是如此实现的,但从实质上讲,MFC Object 的创建和 Windows Object 的创建是两回事。 从转换上比较 可以从一个 可以从一个 MFC Object 得到对应的 Windows Object 的句柄;一 般使用 MFC Object 的成员函数 GetSafeHandle 得到对应的句柄。 可以从一个已存在的 Windows 可以从一个已存在的 Windows Object 创建一个对应的 MFC Object;一般使用MFC Object 的成员函数Attach或者FromHandle 来创建,前者得到一个永久性对象,后者得到的可能是一个临时 对象

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档