ATLWTL第二部分.docxVIP

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ATL

第二部分 - WTL 中的 GUI 基础类内容第二部分介绍WTL 综述开始一个 WTL EXEWTL 消息映射的增强使用 WTL AppWizard 可以得到什么通历向导(VC 6)通历向导(VC 7)检查生成的代码CMessageLoop 内幕CFrameWindowImpl 内幕回到时钟程序UI 更新控制时钟的新菜单项调用 UIEnable()关于消息映射的最后注意事项下一站,1995修订历史第二部分介绍好,是实实在在地讲述 WTL 的时候了!在这部分里,我会介绍写一个主框架窗口的基础知识,以及 WTL 引入的比较受欢迎的改进,比如 UI 更新和更好的消息影射。为了最大程度地掌握本部分的内容,你应该安装 WTL 以使其头文件处于 VC 的搜索路径中,而且 AppWizard 也在适当的目录下。WTL 的分发包中附有如何安装 AppWizard 的说明,请参考该文档。记住,如果你安装 WTL 或者编译示例代码时遇到了任何问题,请在张贴你的问题之前阅读第一部分的 ReadMe 一节。WTL 综述WTL 的类可以分为几个主要的类别:框架窗口的实现 -?CFrameWindowImpl,?CMDIFrameWindowImpl控件封装 -?CButton,?CListViewCtrlGDI 封装 -?CDC,?CMenu特殊的 UI 特性 -?CSplitterWindow,?CUpdateUI,?CDialogResize,?CCustomDraw工具类以及宏 -?CString,?CRect,?BEGIN_MSG_MAP_EX本文将深入到框架窗口中去,顺便提及一些 UI 特性和工具类。大多数的类都是独立的,不过也有一些像?CDialogResize?这样的嵌入类(mix-in)。开始一个 WTL EXE如果你不使用 WTL AppWizard (稍后我们就会提到它),那么一个 WTL EXE 一开始会很像一个 ATL EXE。如同第一部分中的那样,本文中的示例代码是另一个框架窗口,不过为了展示一些 WTL 的特性,较之前者不再那么微不足道。在本节里,我们会从头开始一个新的 EXE。主窗口会在其客户区显示当前的时间。下面是一个基本的?stdafx.h:#define STRICT#define WIN32_LEAN_AND_MEAN#define _WTL_USE_CSTRING#include atlbase.h // base ATL classes#include atlapp.h // base WTL classesextern CAppModule _Module; // WTL version of CComModule#include atlwin.h // ATL GUI classes#include atlframe.h // WTL frame window classes#include atlmisc.h // WTL utility classes like CString#include atlcrack.h // WTL enhanced msg map macrosatlapp.h?是要包含的第一个 WTL 头文件。它包含了用于消息处理的类和一个继承自?CComModule?的类?CAppModule。如果你计划使用?CString那就还应该定义?_WTL_USE_CSTRING,因为?CString?定义在 atlmisc.h 里,而在 atlmisc.h 包含的其他头文件里有的特性会使用到?CString。定义?_WTL_USE_CSTRING?使得 atlapp.h 会前向声明?CString?类,从而使其他的这些头文件知道一个?CString?究竟是什么。(注意,我们需要一个全局的?CAppModule?变量尽管在第一部分里这不是必需的。CAppModule?的一些特性与我们所需的空闲处理以及 UI 更新相关,所以我们需要?CAppModule?的存在)接下来我们来定义我们的框架窗口。像我们这样的 SDI 窗口继承自?CFrameWindowImpl。窗口类名是使用?DECLARE_FRAME_WND_CLASS?而不是DECLARE_WND_CLASS?来定义。这儿是 MyWindow.h 里我们窗口定义的开头:// MyWindow.h:class CMyWindow : public CFrameWindowImplCMyWindow{public: DECLARE_FRAME_WND_CLASS(_T(First WTL window), IDR_MAINFRAME); BEGIN_MSG_MA

文档评论(0)

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

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

1亿VIP精品文档

相关文档