WTL for MFC Programmers, Part I - ATL GUI Classes[1]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 orbit 的 blog

wtl for mfc programmers, part i - atl gui classes

原作 :michael dunn [英文原文]
翻译 :orbit(桔皮干了) [http://www.winmsg.com/cn/orbit.htm]

下载演示程序代码

本章内容

readme.txt

在你开始使用wtl或着在本文章的讨论区张贴消息之前,我想请你先阅读下面的材料。

你需要开发平台sdk(platform sdk)。你要使用wtl不能没有它,你可以使用在线升级安装开发平台sdk,也可以下载全部文件后在本地安装。在使用之前要将sdk的包含文件(.h头文件)和库文件(.lib文件)路径添加到vc的搜索目录,sdk有现成的工具完成这个工作,这个工具位于开发平台sdk程序组的“visual studio registration”文件夹里。

你需要安装 wtl。你可以从微软的网站上下载wtl的7.0版,在安装之前可以先查看“introduction to wtl - part 1”和“easy installation of wtl”这两篇文章,了解一下所要安装的文件的信息,虽然现在这些文章有些过时,但还是可以提供很多有用的信息。有一件我认为不该在本篇文章中提到的事是告诉vc如何搜索wtl的包含文件路径,如果你用的vc6,用鼠标点击 tools\options,转到directories标签页,在显示路径的列表框中选择include files,然后将wtl的包含文件的存放路径添加到包含文件搜索路径列表中。

你需要了解mfc。很好地了解mfc将有助于你理解后面提到的有关消息映射的宏并能够编辑那些标有“不要编辑(do not edit)”的代码而不会出现问题。

你需要清楚地知道如何使用win32 api编程。如果你是直接从mfc开始学习windows编程,没有学过api级别的消息处理方式,那很不幸你会在使用wtl时遇到麻烦。如果不了解windows消息中wparam参数和lparam参数的意义,应该明白需要读一些这方面的文章(在codeproject有大量的此类文章)。

你需要知道 c++ 模板的语法,你可以到vc forum faq 相关的连接寻求答案。

我只是讨论了一些涵盖vc 6的特点,不过据我了解所有的程序都可以在vc 7上使用。由于我不使用vc 7,我无法对那些在vc 7中出现的问题提供帮助,不过你还是可以放心的在此张贴你的问题,因为其他的人可能会帮助你。

对本系列文章的总体介绍

wtl 具有两面性,确实是这样的。它没有mfc的界面(gui)类库那样功能强大,但是能够生成很小的可执行文件。如果你象我一样使用mfc进行界面编程,你会觉得mfc提供的界面控件封装使用起来非常舒服,更不用说mfc内置的消息处理机制。当然,如果你也象我一样不希望自己的程序仅仅因为使用了mfc的框架就增加几百k的大小的话,wtl就是你的选择。当然,我们还要克服一些障碍:

  • atl样式的模板类初看起来有点怪异
  • 没有类向导的支持,所以要手工处理所有的消息映射。
  • msdn没有正式的文档支持,你需要到处去收集有关的文档,甚至是查看wtl的源代码。
  • 买不到参考书籍
  • 没有微软的官方支持
  • atl/wtl的窗口与mfc的窗口有很大的不同,你所了解的有关mfc的知识并不全部适用与wtl。

从另一方面讲,wtl也有它自身的优势:

  • 不需要学习或掌握复杂的文档/视图框架。
  • 具有mfc的基本的界面特色,比如ddx/ddv和命令状态的自动更新功能(译者加:比如菜单的check标记和enable标记)。
  • 增强了一些mfc的特性(比如更加易用的分隔窗口)。
  • 可生成比静态链接的mfc程序更小的可执行文件(译者加:wtl的所有源代码都是静态链接到你的程序中的)。
  • 你可以修正自己使用的wtl中的错误(bug)而不会影响其他的应用程序(相比之下,如果你修正了有bug的mfc/crt动态库就可能会引起其它应用程序的崩溃。
  • 如果你仍然需要使用mfc,mfc的窗口和atl/wtl的窗口可以“和平共处”。(例如我工作中的一个原型就使用了了mfc的cframewnd,并在其内包含了wtl的csplitterwindow,在csplitterwindow中又使用了mfc的cdialogs -- 我并不是为了炫耀什么,只是修改了mfc的代码使之能够使用wtl的分割窗口,它比mfc的分割窗口好的多)。

本文关键:ATL WTL MFC
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top