链接:上一部分
第十部分 – 实现一个拖放源
内容
简介
拖放是许多流行应用的特性之一。尽管实现一个放下目标相当简单,但拖动源却要复杂的多。MFC 中有两个类 COleDataObject 和 COleDropSource 可以帮助管理拖动源所必须提供的数据,但 WTL 中没有这种辅助类。对于我们这些 WTL 用户来说,幸运的是,Raymond Chen 在 2000 年的时候在 MSDN 上写过一篇文章(“The Shell Drag/Drop Helper Object Part 2”),其中有 IDataObject 的纯 C++ 实现,这对于为 WTL 应用编制一个完整的拖放源提供了巨大的帮助。
阅读全文…
|
MFC 程序员的 WTL 教程, WTL
IDataObject, IDropSource, MRU, WTL, 拖放源
链接:上一部分;下一部分
第九部分 – GDI 类,公用对话框以及工具类
内容
- 简介
- GDI 封装类
- 封装类里的公用函数
- 使用 CDCT
- 与 MFC 封装类的差异
- 资源加载函数
- 使用公用对话框
- CFileDialog
- CFolderDialog
- 其他有用的类和全局函数
- Struct 的封装
- 处理双类型参数的类
- 其他工具类
- 全局函数
- 宏
- 示例工程
- 版权和许可
- 修订历史
简介
WTL 里包含了好多封装类和工具类,而直到现在也还没有在本系列里进行过全面的介绍,比如说 CString 和 CDC。WTL 具有一个封装 GDI 对象的良好体系,一些用以加载资源的便利函数,以及更便于使用某些 Win32 公用对话框的类。在此第九部分里,我将介绍一些使用最广泛的类。
阅读全文…
|
MFC 程序员的 WTL 教程, WTL
CFileDialog, CFolderDialog, GDI 类, WTL, 公用对话框, 工具类
链接:上一部分;下一部分
第八部分 – 属性表和向导
|
内容
- 简介
- WTL 属性表类
- WTL 属性页类
- CPropertyPageWindow 的方法
- CPropertyPageImpl 的方法
- 处理通知消息
- 创建一个属性表
- 永远最简单的属性表
- 创建一个有用的属性页
- 创建一个更好的属性表类
- 创建一个向导
- 其他的 UI 考虑
- 下一步
- 修订历史
简介
甚至于在 Windows 95 把属性表引入为公用控件之前,它就已经成为了呈现选项的一种颇为流行的方法了。向导通常用于指导用户通历软件的安装过程或者其他的复杂工作。WTL 对创建这两种类型的属性表都提供了良好的支持,并允许你使用前 面介绍过的所有的那些对话框相关的特性,比如说 DDX 和 DDV。在本章里,我会演示创建一个基本的属性表和向导,以及如何处理由表发送出的事件和通知消息。
阅读全文…
|
MFC 程序员的 WTL 教程, WTL
WTL, 向导, 属性表
链接:上一部分;下一部分
第七部分 – 分割条窗口
|
内容
- 简介
- WTL 分割条窗口
- 开始示例工程
- 在窗格中创建窗口
- 消息路由
- 窗格容器
- 类
- 基本方法
- 在分割条窗口中使用窗格容器
- 关闭按钮以及消息处理
- 高级分割条特性
- 嵌套分割条
- 在窗格中使用 ActiveX 控件
- 特殊绘制
- 窗格容器中的特殊绘制
- 奖励:状态栏中的进度条
- 下一步
- 参考资料
- 修订历史
简介
自从 Windows 95 的资源管理器以其文件系统的双窗格视图粉墨登场以来,分割条窗口就成了一个流行的 UI 元素。MFC 中有一个复杂而强大的分割条窗口类,但是学会如何使用它却有点困难,而且它关联于文档/视图框架。在本部分里,我将探讨 WTL 的分隔条窗口,与 MFC 的分割条窗口相比没那么复杂。尽管 WTL 分隔条的实现没有 MFC 的特性丰富,但它却极其易于使用和扩展。
本章的示例工程是对 ClipSpy 的重新实现,当然,是使用了 WTL 而不是 MFC。如果你对该程序不熟悉,现在可以先浏览一下相关的文章,因为在这儿我会复制 ClipSpy 中的功能,但不会提供其工作原理的深入解释。本文主要聚焦于分割条窗口而不是剪贴板。
阅读全文…
|
MFC 程序员的 WTL 教程, WTL
ClipSpy, CSplitterImpl, CSplitterWindow, WTL, 分割条窗口
链接:上一部分;下一部分
第六部分 – 宿纳 ActiveX 控件
|
内容
- 简介
- 以 AppWizard 开始
- 使用资源编辑器添加控件
- 用于宿纳控件的 ATL 类
- CAxDialogImpl
- AtlAxWin 和 CAxWindow
- 调用控件的方法
- 接收控件激发的事件
- 在 VC 6 里添加处理器
- 在 VC 7 里添加处理器
- 事件的知会
- 示例工程概述
- 运行时创建 ActiveX 控件
- 键盘处理
- 下一步
- 修订历史
简介
在这第六部分里,我将介绍 ATL 对在对话框中宿纳(hosting)ActiveX 控件的支持。由于 ActiveX 控件是 ATL 的专项,所以这儿并没有相关的 WTL 类。不过,因为 ATL 宿纳控件的方式与 MFC 迥异,所以这是我们要介绍的一个重要主题。我会介绍如何宿纳控件以及接收(sink)事件,并开发一个相比用 MFC 的 ClassWizard 写就的应用毫无功能损失的应用程序。当然,你可以在你写的 WTL 应用中使用 ATL 对控件宿纳的支持。
阅读全文…
|
Internet Explorer Programming, MFC 程序员的 WTL 教程, WTL
ActiveX, IE, Internet Explorer, WTL
链接:上一部分;下一部分
第五部分 – 高级对话框 UI 类
|
内容
- 第五部分简介
- 属主绘制(Owner Draw)以及定制绘制(Custom Draw)的专用类
- 新的 WTL 控件
- CBitmapButton
- CCheckListViewCtrl
- CTreeViewCtrlEx 和 CTreeItem
- CHyperLink
- 对话框控件的 UI 更新
- DDV
- 改变对话框的大小
- 下一步
- 参考资料
- 修订历史
第五部分简介
在上一部分里,我们了解了一些关于对话框和控件的 WTL 特性,其工作方式与 MFC 中的对应类很相似。在本部分里,我们会介绍几个新的 WTL 类,它们实现了一些更加高级的 UI 特性:属主绘制(Owner draw)和定制绘制(Custom draw),新的 WTL 控件,UI 更新,以及对话框数据验证(DDV)。
阅读全文…
|
MFC 程序员的 WTL 教程, WTL
CCustomDraw, COwnerDraw, DDV, DDX, WTL, 高级对话框 UI 类
链接:上一部分;下一部分
第四部分 – 对话框和控件
|
内容
- 简介
- 重温 ATL 对话框
- 通用控件封装类
- 使用 AppWizard 创建基于对话框的应用
- 使用控件封装类
- ATL 方法 1 – 附着到 CWindow
- ATL 方法 2 – CContainedWindow
- ATL 方法 3 – 子类化
- WTL 方法 1 – DDX_CONTROL
- WTL 方法 2 – DDX_CONTROL_HANDLE
- 更多 DDX 的内容
- DDX 宏
- 关于 DoDataExchange() 的更多信息
- 使用 DDX
- 处理来自控件的通知
- 拾零
- 修订历史
第四部分简介
对话框和控件是 MFC 确确实实节省你时间和精力的一个地方。如果没有 MFC 的控件类,你就会被淹没在填充结构以及写下成吨的 SendMessage 调用以管理控件的琐事中。而且 MFC 还提供了对话框数据交换(DDX),可以在控件和变量之间传递数据。WTL 也支持所有这些特性,并且在其通用控件的封装类里还加入了一些改进。在本文中,我们致力于一个基于对话框的应用,它演示了你所使用过的 MFC 特性,以及一些 WTL 在消息处理上的增强。高级 UI 特性以及 WTL 中的新控件将在第五部分里介绍。
阅读全文…
|
MFC 程序员的 WTL 教程, WTL
DDX, WTL, 对话框, 控件
链接:上一部分;下一部分
第三部分 – 工具栏和状态栏
|
内容
- 第三部分介绍
- 框架中的工具栏和状态栏
- AppWizard 为工具栏和状态栏生成的代码
- CMainFrame 如何创建栏
- 显示或者隐藏栏
- 栏的内建特性
- 使用不同的风格创建工具栏
- 工具栏编辑器
- 工具栏按钮的 UI 更新
- 用复用栏代替平实的工具栏
- 多窗格状态栏
- 下一步:关于对话框的一切
- 参考资料
- 修订历史
第三部分介绍
从在 Windows 95 中被作为通用控件开始,使用工具栏和状态栏已经成为了平常事。MFC 对多浮动工具栏的支持也对他们的流行起了推波助澜的作用。在后来的通用控件升级中,复用栏(Rebar,或者最初被称为的酷栏,coolbar)又为如何呈现工具栏增添了新的途径。在这一部分里,我会涵盖以下知识,WTL 如何对这些种类的栏进行支持以及如何在自己的应用中使用它们。
阅读全文…
|
MFC 程序员的 WTL 教程, WTL
WTL, 工具栏, 状态栏
链接:上一部分;下一部分
第二部分 – WTL 中的 GUI 基础类
|
内容
- 第二部分介绍
- WTL 综述
- 开始一个 WTL EXE
- WTL 消息映射的增强
- 使用 WTL AppWizard 可以得到什么
- 通历向导(VC 6)
- 通历向导(VC 7)
- 检查生成的代码
- CMessageLoop 内幕
- CFrameWindowImpl 内幕
- 回到时钟程序
- UI 更新
- 关于消息映射的最后注意事项
- 下一站,1995
- 修订历史
第二部分介绍
好,是实实在在地讲述 WTL 的时候了!在这部分里,我会介绍写一个主框架窗口的基础知识,以及 WTL 引入的比较受欢迎的改进,比如 UI 更新和更好的消息影射。为了最大程度地掌握本部分的内容,你应该安装 WTL 以使其头文件处于 VC 的搜索路径中,而且 AppWizard 也在适当的目录下。WTL 的分发包中附有如何安装 AppWizard 的说明,请参考该文档。
阅读全文…
|
MFC 程序员的 WTL 教程, WTL
CDialogResize, GUI 基础类, WTL
链接:
下一部分
第一部分 – ATL 中的 GUI 类
|
本章内容
- README.TXT
- 本系列介绍
- 第一部分介绍
- ATL 背景知识
- ATL 窗口类
- 定义窗口实现
- 高级消息映射链和嵌入(Mix-in)类
- ATL EXE 的结构
- ATL 中的对话框
- 就要到 WTL 了,我保证!
- 修订历史
README.TXT
在继续或者在本文的讨论板块中发布帖子之前,我希望你能先阅读以下内容。
本系列原来是为 VC 6 用户写的,介绍 WTL 7.0 的内容。现在 VC 8 已经出来了,我觉得也到了更新本系列来介绍 VC 7.1 的时候了。;)(不过,VC 7.1 的从 6 到 7 的自动转换工作并不是总能平滑地完成,所以 VC 7.1 的用户在试着使用示例源代码的时候可能会遭遇失败)因而,我将继续下去,持续更新本系列。文章将更新到可以反映 WTL 7.1 的特性,并会在下载的源代码中包括 VC 7.1 的工程。
针对 VC 2005 用户的重要提示:VC 2005 的 Express 版本并不附带 ATL 或者 MFC,因此不能使用此版本编译 ATL 或者 WTL 工程。
阅读全文…
|
MFC 程序员的 WTL 教程, WTL
ATL, GUI, MFC, WTL
近期评论