下面很多资料链接都断了,请参照这个最权威: 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