在你开始使用WTL或着在本文章的讨论区张贴消息之前,我想请你先阅读下面的材料。
你需要开发平台SDK(Platform SDK)。你要使用WTL不能没有它,你可以使用在线升级安装开发平台SDK,也可以下载全部文件后在本地安装。在使用之前要将SDK的包含文件(.h头文件)和库文件(.Lib文件)路径添加到VC的搜索目录,SDK有现成的工具完成这个工作,这个工具位于开发平台SDK程序组的“Visual Studio Registration”文件夹里。
你需要安装 WTL。你可以从微软的网站上下载WTL的7.0版,(*编辑注:WTL也可以到VC知识库http://www.vckbase.com/tools下载) 在安装之前可以先查看“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动态库就可能会引起其它应用程序的崩溃。