大约在两年前,在编程过程中深切的感受到 MFC 太庞大,而 WTL 语法太晦涩。我是从 SDK 入手学习 Windows 编程的,一个最简单的 SDK 窗口程序的大约 60 行代码虽然不敢说倒背如流,但也不需要看着 MSDN 去写。用了 MFC 很多年以后,基本上不会问 WinMain 在什么地方的问题了,但是经常发现用 MFC 写的程序到别人的机器上很难调试,因为需要有 Visual C++ 环境;经过摸索,老汉自己做了一套便携版的 VC6,放在 USB 盘上,到其它人的机器上只要解包就可以使用,但 MFC 的头文件、源文件和库文件 Debug 和 Release 两个版本加起来比较大,只好舍弃。WTL 倒是一个不错的选择,可是我实在忍受不了它要依赖 ATL,而微软现在几乎要把 ATL 做的和 MFC 一样大;另外的一个问题是,WTL 大量使用了模板。对于模板,我的看法是,如果可以做到像 STL 那样使人很容易的使用,倒也无妨,我们可以把它看成黑盒子,不太需要去理会,除非是研究或者是调试比较复杂的问题;而如果像 WTL 那样,自己的类需要从之派生,在一定程度上必须知道其实现细节的,我就不太喜欢。当然这仅是一家之言,我姑妄言之,汝姑妄听之。
于是,我决定写一个比较小的,能够满足我日常使用的窗口类库,这也就是 TWL 的由来。之所以叫 TWL,乃是 Tiny Window Library 的缩写。当时一时冲动,写了几个头文件,而后工作一忙,就搁置了一年多。前两天 CSDN 上有人在讨论关于 MSDI (Multiple SDI)界面的时候,我计划用 TWL 写一个 MSDI 的例子,顺便也充实一下 TWL,幸而圆满完成。
TWL 只是几个头文件,不需要链接 .lib 文件。当前还非常简陋,望方家勿笑。
TWL 以及示例程序下载地址:(我实在不知道该上传到哪里,需要者请留邮箱,呵呵)。