WTL for MFC Programmers, 中文版序言

翻译 2004年04月05日 23:03:00

WTL for MFC Programmers, Chinese Version Prologue

 

我一直在寻找这样一个类库:他对Windows的窗口提供面向对象的封装,有灵活的消息响应机制和比较完备的界面框架解决方案,对标准控件提供简练实用的封装,支持操作系统的新特性,支持功能扩充和二次开发,有代码自动生成向导机制,生成的程序使用较少的系统资源,最后是有完全的代码支持和文档支持。

你会说那就用MFC吧!

是的,我一直使用MFC,但我对MFC已经越来越厌倦了。陈旧的类库使得它无法支持操作系统的新特性(MFC的类库从4.21版之后就没有更新了,而那时是1998年,人们使用Windows 95和windows NT4),臃肿的消息映射机制和为了兼容性而保留下来的代码使得程序效率低下,面面俱到的框架结构使得生成的应用程序庞大并占用过多的系统资源。当一个功能简单的程序使用动态链接也超过200K,占用3%-4%的系统资源时,我决定放弃MFC,寻找一个新的功能类似的类库。我研究过很多类似的代码,不是过于简单,无法用于应用程序的开发就是缺乏代码和文档的支持。在CodeProject上有一个名为Class的类库,我也研究过它的代码,具备了基本的界面框架,对控件也有了简单的封装,但是不实用,庞大的虚函数机制使得对象非常臃肿,无法减少对资源的占用。我甚至仿照MFC做了一个简单的类库miniGUI,形成了基本的框架解决方案,但是最后放弃了,原因很简单:无法用于应用程序的开发。一个应用程序界面框架错综复杂,要考虑的事情太多,开发者不可能在应用程序和界面框架两线作战。就在我即将绝望的时候,我遇到了WTL。

由于工作的需要经常开发一些COM组件,在要求不能使用MFC的场合就是用ATL。ATL提供了对窗口的面向对象地封装和简单的消息映射机制,但是ATL过于简单,用它开发应用程序几乎不可能。要想让ATL具备界面框架解决方案的功能还需要做很多事情,幸运的是WTL就做了这些事情。WTL是个很奇特的东西,它由微软公司一群热情的程序员维护,它从未出现在微软的官方产品名单上,但可以从微软的官方网站下载最新的WTL。它没有正式的文档支持,用WTL做关键字在MSDN中检索只能得到0个结果,但是全世界的开发网站上都有针对WTL的讨论组和邮件列表,任何问题都会得到热情的解答。我认真地对比了MFC和WTL,发现二者有很多相通之处,MFC的功能几乎都能在WTL中实现,只是方法不同而已。我几乎不费吹灰之力就将以前写的一个MFC程序用WTL改写了,使用静态链接的WTL程序比使用动态链接的MFC程序还要小,资源占用只有MFC程序的一半。

但是一时的热情不能解决文档缺乏的困扰,虽然网上有很多使用WTL的例子和说明文章,几乎把MFC能实现的各种稀奇古怪的效果都实现了,但都是着眼于局部问题得解决,缺乏系统地全面地介绍WTL的文章。就在这个时候我看到了迈克尔.敦(Michael Dunn)的“WTL for MFC Programmers”系列文章,我的感觉和1995年我第一次见到MSDN时一样,几乎是迫不及待地将其读完,同时也萌发了将其翻译成汉语的冲动。于是给Michael写了封邮件,希望能够得到授权将他的文章翻译成汉语(事实上在这之前我已经翻译了两章了)。在得到授权确认后才发现这个工作是多么的困难,但为时已晚,只能硬着头皮撑下去。

现在介绍一下迈克尔.敦这个人。迈克(Mike)住在阳光灿烂的洛杉矶,深受那里天气的宠爱使他愿意一直住在那里。他在4年级时就开始在Apple //e上编程序,1995年从UCLA(加利福尼亚大学洛杉矶分校)毕业,获得数学学士学位。毕业后加盟赛门铁克(Symantec)公司,成为Norton AntiVirus小组的质量评价工程师。他几乎是自学了Windows和MFC编程,1999年他为Norton AntiVirus 2000设计并编写了新的界面。迈克现在是pressplay(不久成为Napster)的开发人员。他最近开发了一个IE的工具条插件UltraBar,可以轻松实现繁琐的网络搜索功能。他还和别人合作创办了一家软件开发公司:Zabersoft,该公司在洛杉矶和欧登赛(丹麦)都设有办事处。迈克喜欢玩弹球和骑自行车,偶尔也玩一下PlayStation,他还一直坚持学习法语,官方汉语和日语。

另外需要说明得是我翻译“WTL for MFC Programmers”系列文章不是为了获得任何利益,只是想为大家提供一些新的思路。如果你是MFC的坚定捍卫者,看到这里你就可以停下来了,再看下去是浪费你的时间(希望你看了前面几段文字还能挺住不要呕吐)。如果你是个对另类事物充满热情的程序员,你不能不研究WTL,它真的是一座宝藏。

最后用我的朋友对我的翻译文章的评价来结束“WTL for MFC Programmers”中文版的序言:翻译水平和你用的鼠标一样烂!

本系列文章最早发表于vchelp网站

Orbit (星轨 oRbIt)
2003年8月17日
全文打包下载:http://www.winmsg.com/cn/orbit.htm

WTL中使用CFileDialog类进行文件多选

本文章来给各位同学介绍一个WTL中CFileDialog实现文件多选,希望此教程 对大家会有所帮助哦。 我在将一个用MFC编写的工程修改为WTL工程,旧的MFC工程中有调用文件浏览器选择多个文件的代...
  • lingtianyulong
  • lingtianyulong
  • 2014年04月13日 18:07
  • 884

MFC、WTL 、ATL、STL联系与区别

MFC、WTL 、ATL、STL联系与区别    这个要先从C++和VC++说起!    c++是一门语言,它与平台无关。只要能提供c++编译器(或者交叉编译器)的平台,就能用c++编程。...
  • u011686361
  • u011686361
  • 2014年09月23日 20:40
  • 1156

MFC、WTL、WPF、wxWidgets、Qt、GTK、Cocoa、VCL 各有什么特点?

以下内容转载自http://www.cnblogs.com/findumars/p/4204416.html WTL都算不上什么Framework,就是利用泛型特性对Win API做...
  • pyf09
  • pyf09
  • 2017年06月06日 23:53
  • 486

STL,ATL,WTL之间的联系和区别

一、STL即 Standard Template Library (标准模板库)       STL是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Le...
  • wangwenjing90
  • wangwenjing90
  • 2013年05月14日 14:44
  • 3969

WTL 详细介绍

转自:WTL for MFC Programmers, Part I - ATL GUI Classes 在你开始使用WTL或着在本文章的讨论区张贴消息之前,我想请你先阅读下面的材料。 你需要开...
  • worldy
  • worldy
  • 2013年11月05日 00:00
  • 3786

WTL 基础:CWindow 发现

心情好的话,我喜欢去看WTL或者ATL底层的源代码,有些我已经看过很多bian
  • xianlaowu
  • xianlaowu
  • 2014年04月13日 15:14
  • 1215

WTL基础: 显示图片(JPG, BMP, PNG, TIF等)

使用ATL 的Cimage类,图片文件大掉入和显示,变的shif
  • xianlaowu
  • xianlaowu
  • 2014年04月20日 12:06
  • 972

一个显示进度条的WTL状态栏类

引言   好久没用WTL写代码了,WTL已经更新到8.1版本,但依旧没有提供对VS2013的支持,网上有相关更改想到模板的方法,但向导界面和VS2013的风格严重不搭,丑的一逼……好在WTL代码结构很...
  • mousebaby808
  • mousebaby808
  • 2014年02月14日 14:54
  • 3092

WTL界面自绘系列-预备

本文不会阐述技术上的细节,旨在提供宏观的思路。 wi界面自绘
  • u011076878
  • u011076878
  • 2014年05月24日 15:38
  • 697

WTL,ATL与MFC之比较

MFC,ATL,WTL的历史沿袭 需求推动了技术的发展,从MFC到ATL,从ATL再到WTL的发展历程我想就是一个最好的见证。 早期的VC++开发者们发现了MFC(Microsoft Fo...
  • zhaoxiatengkong_1
  • zhaoxiatengkong_1
  • 2013年05月19日 11:16
  • 763
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WTL for MFC Programmers, 中文版序言
举报原因:
原因补充:

(最多只允许输入30个字)