WTL学习指南

 下面很多资料链接都断了,请参照这个最权威: http://wtl.itservices.com.cn/

 

 

 

WTL学习资料非常少,最要命的是WTL没有官方支持,所以记录一下,给WTL学习的同学一点参考,少走弯路.

 

我的情况:

一个人开发Windows 客户端,除了网络,没有任何技术支持。以前开发过嵌入式Linux开发,基本不和界面打交道,知道一些Windows编程要素,也了解MFC,其他无任何Windows开发经验,也从来没有开发过一个Windows程序。目前需要开发一个Windows的支持拖拽的类似ipad应用的图像处理软件。

 

至于为何选择WTL而不选择MFC,类似问题不在讨论范围,我的指南仅仅给愿意使用WTL编程的人的一些参考意见

 

 

1. 基本浏览一下Windows 程序开发的元素,比如消息机制 窗口机制什么的,

2. 看一下 《深入解析ATL》第九章 窗口这一节  http://www.verycd.com/topics/2868684/

3. 看一下小布老师的WTL视频介绍 http://bbs.code.ijinshan.com/thread-1326-1-1.html

4. 跟着金山学习一下WTL视频课程 http://bbs.code.ijinshan.com/forum-5-1.html 从4月份到6月份的连续课程。推荐下载EXE文件,比较清晰。Windows 7下需要下载TrueSpeech补丁可以播放声音。这里非常感谢金山的视频,帮助很大,至少师傅带进门了。

5. 再看一下WTL宝典,WTL程序员指南,这个要精读,并顺着例子走一遍 http://code.ijinshan.com/res/d/www.yakergong.com/wtl/

 

开发平台 Visual C++ 6.0 SP6 , Windows SDK 2003,  http://hi.baidu.com/xiquegg/blog/item/a9b1eea3d54d998746106478.html Windows SDK 2003 是必须的,否则当修改WINVER超过0x0400的时候,会报错误

Windows SDK安装, 在Setup目录中 必须安装 CoreSDK和PSDK 这两个文件

 

WTL 教程链接打不开了,我自己搞了一个,并修正了原来的链接错误,并增加了WTL 帮助手册 http://data.tohnichi-sh.com/wtl/ 

 

2013-01-31: 我还是喜欢在VC6 上把程序调试好再整倒VS2010上去

 

【类关系】CHAIN_MSG_MAP / ALT_MSG_MAP / SetMsgHandled()

WTL中经常有这几个概念,有些混淆,其实很简单,简单著名一下:

这个是给窗口类处理父子继承关系使用的.

ALT_MSG_MAP一般用在父类(注意,是父类,不是父窗口)

CHAIN_MSG_MAP一般用在子类,告诉父类,这个消息你来处理。有些时候,不同的子类处理同一种消息,消息的处理需要有父类来完成,如何协调呢?通过附带给不同继承的子类不同的(MSG_MAP_ID),用于在父类处理不同的参数。如果需要告诉父类这个我处理过了,不劳您大驾的画,则使用SetMsgHandled()来处理。之间的关系可以看看http://tech.ccidnet.com/art/1081/20021111/30384_3.html 





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动态库就可能会引起其它应用程序的崩溃。 如果你仍然需要使用MFCMFC的窗口和ATL/WTL的窗口可以“和平共处”。(例如我工作中的一个原型就使用了了MFC的 CFrameWnd,并在其内包含了WTL的CSplitterWindow,在CSplitterWindow中又使用了MFC的CDialogs -- 我并不是为了炫耀什么,只是修改了MFC的代码使之能够使用WTL的分割窗口,它比MFC的分割窗口好的多)。 在这一系列文章中,我将首先介绍ATL的窗口类,毕竟WTL是构建与ATL之上的一系列附加类,所以需要很好的了解ATL的窗口类。介绍完ATL之后我将介绍WTL的特性以并展示它是如何使界面编程变得轻而易举。 对第一章的简单介绍
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值