WTL初用手记 :: 好人的BLOG

来源: BlogBus 原始链接: http://haoren.blogbus.com:80/logs/2005/03/1044579.html 存档链接: https://web.archive.org/web/20060118040919id_/http://haoren.blogbus.com:80/logs/2005/03/1044579.html


好人的BLOG 技术在于沉淀,切勿心浮气躁 << [转]Delegation(委托)模式 | Top | VB底层实现之 -- Variant >> WTL初用手记 Time:2005-03-05 已经记不起是什么时候听过"WTL"这个名词了,那时好像看过一篇文章介绍它,不过那文章对我的效果甚微,除了在了脑海里留下"WTL"三个连在一起的字母之外,我对这东西是一无所知. 今天在网上闲逛,又看到几篇介绍WTL文章,不由得引起了我的好奇心,这阵子我是什么都尝试,趁着在家休息开阔一下自己的视野,于是照着文章的所写的地址去MS的站点下载WTL,很不幸运,MS的站上已经没有那个链接了,在MSDN站点上搜索"WTL"还真没找到什么有价值的东东.看来MS确实不对它进行支持了.后来在VC知识库上发现有WTL7.0下载,于是就下载了一个试着用用. WTL SDK包很小,还不到1M,解压后设置好VC的INCLUDE路径,至于WIZARD在WTL的SDK包里已经有JS脚本方便添加到VC的所在目录下.所以安装是相当简单的.支持VC6和VC7. 在SDK包下有SAMPLES,自然是先把几个SAMPLE全部编译一遍运行看看效果了.发现ALPHA示例无法被编译.那暂时不理会.试着在VC里用WTL WIZARD新建了一个模式对话框工程,感觉也颇为不错.生成的文件大小很令我满意.RELEASE版本的EXE只有三十多K,与MFC的静态编译相差巨大. 后来大致看了看VCKBASE上下载的WTL白皮书,发现WTL支持的窗口控件还是挺多的.足可以满足一般小型的应用程序需要. 最后试着用WIZARD生成了几个示例,其中对于包含WebBrowser的示例令我很感到意外,原因是因为它对整个WebBrowser控制就像对普通窗口一样.我曾清楚的记得以前工作时,需要添加WebBrowser,不得不把一个本来用纯SDK写成的自动更新程序换成了MFC工程(我个人水平有限,无法用纯SDK写包含WebBrowser的程序了,而且也实在对用纯SDK写包含复杂UI的东西感到厌烦了).后来需求稍作变更,因为要在WebBrowser里包含Flash,需要去除右侧的滚动条,我用SetWindowLong函数怎么也无法去掉WebBrowser的滚动条.后来去CSDN发贴求助,才知道原来去掉这东东的滚动条颇为复杂,要取得IE组件的接口,要实现XXXX(过于复杂省略XXX字),结果令我大为头疼. 但在WTL生成的工程里,惊奇的发现,要操作WebBrowser的窗口风格,竟然可以像普通的窗口一样,在它的提供的统一窗口管理基类的create函数里指定风格即可: //TODO: Replace with a URL of your choice m_hWndClient = m_view.Create(m_hWnd, rcDefault, _T("haoren.blogbus.com"), WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN /| WS_HSCROLL | WS_VSCROLL/, WS_EX_CLIENTEDGE); HOHO,如果早知道这样可以的话,那么以前因工作需要而写的自动更新程序我肯定使用WTL了.附上效果图一张: 最后认真看了看WTL的框架,结构也比较清晰,通过模板和组合继承UI,消息过滤器等来确定具体的窗口控制类,看起来比MFC的要舒服许多(俺比较喜欢模板和泛型.呵呵) 个人感觉是WTL非常适合一般的对界面要求不是很高的中小型应用程序开发.但其中最大的不足之处是假如你需要使用它的话,得学习它--就像我对MFC的态度一样,我不喜欢MFC的原因之一也是因为我不想认真学习它,倒不是因为MFC本身存在问题(我从不否认MFC是很优秀的).我已经习惯使用STL里的string了,为什么还要CString呢,已经习惯使用Winsock了,为什么还要CSockt呢.等等...至于UI部分,说老实话我用VC做UI做得很少,因为大部分有需要用到UI的情况下,我是VB+VC混合完成的.因这这更节省时间.不过稍微令我遗憾的我在写一些VC的小程序时,不得不选择控制台模式..不过有了WTL,我想这种情况会得到改观的.HOHO... yukun84 Posted at 2005-03-05 15:55 Edit | Trackback(0) Comments Add Comment Updated