老外眼中的WINX

今天 google时无意中看到一个 wiki上提到了 winx。这是一个 介绍WTL的网站(其实整个网站是一个开放的wiki系统,你也可以在上面申请一个space写自己的内容,也可多人协作),作为比较,其中列了一些知名的C++界面库。包括:MFC、ATL、QT、U++、SmartWin++、wxWidgets、VCF、JUCE、WINX、Win32GUI。
 
无疑,WINX是其中最年轻的一个。作者对各个库均作了简要评价。关于WINX部分的原文如下:
 
WINX is a very different proposition from the other GUI libraries and frameworks presented here: this open source (CPL) GUI library is built on top of WTL in an attempt to make WTL easier to use. It is fair to say WINX mostly succeeds.

However this model presents some obvious risks such as the likelyhood of the library to break if drastic changes are made to WTL. Another potential issue is that WINX appears to be the work of a single developer.

There seems to be little to no documentation or support available apart from this
blog . Fortunately, the distribution comes with a large number of samples and tutorials including the port of a few WTL samples.

WINX is small, very recent, and in beta but is also a valiant attempt to democratise WTL and as such deserves to be successful.
 
 
由于我的英文不算好,翻译这完整的一篇文章有些吃力。仅翻译WINX相关的评价如下(我非常感谢如果有人愿意完整翻译这篇文字):
 
WINX是一个观念完全不同于这里提到的所有其他界面库(框架):这个开源(CPL)的界面库基于WTL之上,并试图使得WTL更加容易使用。客观地讲这一点WINX基本上成功了。
 
然而这个库存在几个显而易见的风险。例如由于WTL发生重大变化而破坏这个库的可能性(译者注:应该是指WINX不得不做相应变动)。另一个潜在的问题是WINX看起来只有一个开发人员。
 
从WINX的官方 blog 来看,似乎很少有可用的文档或者其他的支持。所幸的是,WINX的发布提供了大量的样例和指南,包括一些WTL移植到WINX的样例(译者注:其实还有MFC移植到WINX的样例)。
 
WINX是小巧的,非常新的,目前仍然处于Beta版。但是它是推动WTL发展的一个大胆的尝试,这种尝试理应获得成功。
 
----
 
补记:在此之前虽然收到过老外写来的关于WINX的信,但这是来自Internet的第一份评价。我很高兴终于看到第一份对WINX的第三方评价。虽然我觉得有些遗憾,第一份对WINX的评价居然不是中国人写的。这多多少少让我有些意外。

关于该文作者提到的WINX的三个问题,我这里解释一下:

  • WINX基于WTL,这是因为我不想WINX去重复制造轮子。WTL发生重大变化的可能性太小,所以这个风险我觉得几乎不存在。

    我看到有些网友建议我从Win32 API开始封装,来实现WINX。其实,你可以看到在WINX之前,所有的库都这么做。他们要么发展了若干年后才逐步有起色,要么至今仍然未广为人知。如果WINX选择了从Win32 API开始,那么今天,大家就不可能知道这个世上有WINX的存在。WTL是高效的,虽然它的接口有些丑陋,但极其灵活。我实在找不到理由不去用它。

    WINX对WTL的态度是,重用它的代码(实现),而不是它的用法(使用界面)。这使得WINX从一开始就有一个制高点,因为WINX一上来从功能上来讲就是WTL的超集。
     
  • WINX的团队建设中,并且目前已经确认为WINX团队成员的,均已经为WINX作出自己的努力了(我在考虑要不要建一个WINX贡献榜)。我们已经不是单兵作战了。:)
     
  • WINX的中文文档建设中。英文文档目前确实过于匮乏了。如果那位英文好,有一定开发功底,并且有志于参与到WINX团队中来,我非常欢迎。
WTL 在开发者之间的悄悄传播已经超过一年了, 传闻它是基于ATL的,并在微软内部使用.这理所当然的引起了ATL开发者社区的注意.这些人从ATL1.1开始,就一直为ATL控件书写UI代码,但是他们发现,他们的所写的代码常常就是纯的Win32 GDI代码.我告诉您, WTL并没有多大不同.是不是让人失望? 不,因为ATL只是对COM进行了简单的封装,这也是ATL的强大之处. 是的,写ATL您必须通晓COM. 您在ATL上额外花费的功夫跟您学习COM所作的努力比起来,简直微不足道.这跟那些需要把主要精力花费在学习类库本身,忽略COM的库是完全不同的.WTL与此类似.您需要懂得Win32窗口技术和GDI.只要您懂得,学习WTL就似清风抚面,再简单不过了.如果您不懂 这些,那么您最好使用VB来写UI代码. 它给各种类型的应用程序提供了一个基本的框架.注意,虽然您没有MFC那样的文档/视结构,但是您有视(views). 在WTL有大量的代码让您来管理视,而且加入您自己的代码也很容易. WTL有AppWizard,可以让您生成SDI, MDI 和多线程SDI程序多线程SDI跟IE或Windows Explorer很像.它看起来是打开了多个程序实例,实际上这些窗口都是属于一个进程的.另外,您的程序可以是基于对话框的,也可以是基于视的.视可以是基于CWindowImpl的,也可以是基于控件,甚至是IE里的一个HTML页.您可以选择您的程序是否需要一个rebar, command bar (CE-like), toolbar 和/或status bar.另外,您的程序可以主持ActiveX控件,以及成为一个COM服务器. 这里有几个关于视的选项. WTL提供splitter窗口类(这样在一个视里您可以有两个窗口)和scroll窗口类(这样您的窗口可以比它显示的"视"小). WTL也有个类似MFC的UpDateUI的东西,但是它们不是很一样 - 主要的区别是您需要把需要更新的项用宏映射标注出来,然后您在您的类里加入执行UpdateUI的代码. DDX/DDV在WTL也支持,同样类似MFC,但有不同. 您必须加一个宏映射来实现DoDataExchange,然后加入调用它的代码.现在WTL也有GDI类了.然而,HDC的封装类就像CWindow一样,只进行了很简单的封装 - 它几乎没有加入任何新的功能.不过,在WTL,你可以得到播放meta文件和OpenGL支持. 最有价值的我猜应该是打印机DC的那些继承类 - WTL有打印机支持,甚至打印预览. 当然也有GDI对象的封装. 诸如画笔,画刷,区域等.WTL对所有的Win32 (和W2K) 通用对话框进行了封装.同样尽管简单,但是它的确使请求字体或者文件变的非常的简单.合成了旧的AtlControls.h,新加了一些封装类. 这些封装类封装了W2K控件,以及一些不属于Win32的"控件",像Command Bar, bitmap button, hyperlink 和 wait cursor.WTL 最终把消息分离带入了ATL! 一些新的MSG映射宏将消息分离,调用您类里的消息处理函数.消息处理函数的参数的值是从消息分离得到的.唯一令人头痛的是,您需要查看头文件以确定函数参数的意义.
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值