从上一篇文章中可以看出,C++的界面方向还很弱,没有任何一个界面库可以一统天下,所以才造成了界面库百家争鸣的情况。

从时间上看:

1、出来最早的是QT,1991年就有了。

2、VC++ 虽然1992年就出来了,但是一直不给力,那个时候是Borland一统天下,并且1995年Borland出了Delphi,也一直一统天下。

3、在1998年VC++ 6.0 出来之后,Delphi就完败了,从此一蹶不振。

不过以下几个问题需要想一想:

1、在VC++ 6.0 出来之前,Borland一直说完爆VC++;    而VC++ 6.0出来之后,VC++也只说完爆Delphi;    为什么没有人去和QT比?

2、十多年前,程序猿的讨论中,Delphi和VC口水战比较激烈,为什么QT后面几年才被加入到讨论行列之中?

Alberl对这几个问题的猜想是这样的(仅仅是猜想哦,请持怀疑态度!):

1、在Delphi和VC一统天下的时候,QT还没成气候,不然这两家公司肯定会拿去跟QT比。  就像苹果,虽然和微软一样都是元老级公司了,但在iphone没火爆之前,很少有公司去和苹果比,而现在谁都想和苹果攀点关系。

2、那时计算机还不怎么火爆,

记得上小学那会(1997 -- 2002),玩的是单击游戏,半个小时就要花5毛钱,心疼死我了,由于5毛钱可以玩几天街机,所以基本上没去过几次网吧。

上初中那会(2002 -- 2005),网络游戏就开始流行了,那时候挂机玩泡泡堂,后面还玩私服。

上高中那会(2005 -- 2008),泡泡堂玩到银杯后就很少玩了,但是后面又玩QQ堂、QQ音速、QQ象棋等QQ游戏。

高中老师最开始跟我们介绍windows 98,跟我们说丁磊,再后面跟我们说百度一个搜索框可以值几个亿,到高三的时候,学校统一配了电脑,从幻灯片教学升级到投影仪教学,那时老师用的是Vista。 对了,高中还流行MP3,一个128M的都要卖200多块,MP4就只有高富帅才能玩了。

上大学那会(2008 -- 2012),大一的时候很多人都买了手机,去图书馆下载网速特快,一秒几M,那时候用的优酷,然后转格式。然后买了MP5,就不需要转格式了。然后大二很多人买了电脑,当时Alberl买了个差不多6K的笔记本(现在2K都没人要),是班上最贵的了,当时国庆7天都没出去玩,又是装系统,又是分区,又是比较ghost备份等等,然后还比较了好多好多软件,反正每天睡很晚。

后来去给新蛋做兼职,虽然高中就听说淘宝,但当时觉得一是运费贵,而是不靠谱,而大二依然有这种感觉。直到给新蛋做兼职后,就去新蛋网看了看,然后打电话给武汉部总经理(就是他带我们在广埠屯那里做宣传),说想买个相机,他问我是自己下单,还是他下单,我说他帮我下,然后我去提货,看货后再给钱。当时Alberl还贴传单租相机,虽然租的次数不多,但大二大三两年已经把相机费用赚回来了,后来对像素要求高了,并且觉得带着不方便,就送给基友了。在买了相机后就对网上购物有了信任,再次在新蛋买了个移动硬盘,自己下单,不过好像也是货到付款的。后来就开了个网店(大三上,国庆假期),那时候刷钻真容易,三天一个钻,一个月升皇冠都是很容易的事(Alberl的表哥就很快升皇冠了,不过Alberl当时觉得反正刷皇冠这么容易,以后用的时候再刷呗,没想到现在淘宝管这么严了o(╯□╰)o)。 当时每天花一两个小时,一个月下来挣了两千块,并且排到了同类第一,后面很多卖家都盗用Alberl的截图。 不过由于又要考虑考研还是找工作了,所以只做了一个月,然后就疯狂的看书了,当时上Java课看《深入浅出MFC》被老师逮住了,不过Java老师很好,说不管学什么,只要学好一门语言就好了,你们上课不要睡觉,不要玩手机,如果真不喜欢Java,你们看别的科目也行, 就这样大三看了十多本那么厚的书(比如《C++ Primer Plus》等等)。然后大三暑假就实习了,就一直呆在现在的公司。

那时大二玩斗地主需要欢乐豆,就想写个QQ申请器(网上很多都有毒,怕申请之后被盗),于是就开始了,可以在Alberl的CSDN博客上看到部分关键的源代码,那时是2011年2月,由于寒假不能联网,所以就跑到网吧通宵下载资料,当时看到编程入门网很适合,于是下载了几乎所有的MFC资料。捣鼓了一星期终于出来了界面,当时好兴奋,但是接下来的问题可郁闷了,因为要操作网页,这个当时不会找资料,而且之后做完了只能操作普通网站,而腾讯的注册页面虽然可以把信息填进去,但老提示有问题。后来问了一个高手才知道腾讯做了限制。再后来省略N字...

扯远了,不过可以了解到的是,PC机真正进入千家万户还是从2008年那会才开始,当时前面几届很少全班都配电脑的。而大量中国公司上市是在2005年前后。可见计算机在国内的火爆还不到十年。而据说2003年前后才有大量的中文编程资料(这个请老前辈们给出更具体的信息),所以Alberl给编程界划分成两段:2005年之前和2005年之后。

2005年之前

微软在2002年的VS2002 才发布C#的1.0版本,那时候C#是个全新事物,肯定不被待见。直到2005年9月出了3.0,才慢慢被认可,从1998 -- 2005年,一直都是MFC一统界面。

2005年之后

C#越来越稳定,而MFC却7年都没有大更新,一方面媒体收了好处费大肆宣扬C#,一方面MFC确实没有更新,肯定导致MFC程序员士气低落。但是让C++程序员全部转到C#是不可能的,所以这时C++程序员就开始大量讨论MFC和C#了,既然微软一心力挺C#,那做MFC的C++程序员肯定要另寻出路了。好在WTL在2004年就已经很NB了,而从MFC转到WTL是相当容易的事,于是很大一部分人就把希望寄托在WTL了,而WTL也是非常给力,一路更新,到2007年6月还出了8.0。 这更是让MFC程序员看到了希望啊。但是2008年又失望了,因为前面两年每年都更新那么多个版本,2008年一整年都没有更新。但是这也可以理解,毕竟不是官方的嘛,再等两年看看。而在WTL止步不前的时候,VS2008带来了重大改进,又是一个经典版本。其中C#更是达到了高峰,已经使用很广泛了,甚至连大学里都教C#了,可惜的是MFC的更新还是没诚意。

不过这次程序猿学聪明了,等MFC一等就是十年,所以在WTL不更新的时候,又有大部分人去寻求其他界面库,我猜想2008年也是个分水岭,下面给2008年再分一个阶段。

2008年之后

在微软的C#大行其道的同时,MFC却被微软抛弃10年了,而WTL也好像没戏了,难道C++程序猿都转去做C#吗? 显然不是,但是Delphi已经一蹶不振了,还有哪家公司能够跟微软对抗?在windows上,确实是没有对手了,难道C++程序猿的界面就这样交付给MFC了?

当然不是,程序猿的世界就是这么丰富多彩,开源总是跟商业对抗,有时候如果不好选择的话,就可以这么选:

1、linux和windows有什么重大区别?这里就不要说什么安全性啦、易用性啦,直接一句话就概括啦:windows做的很棒,但是收费很贵;而linux是免费开源的。

2、gcc和VS有什么区别?VC只有买了windows才可以用,而gcc免费开源。

3、IE和火狐有什么区别?IE只有买了windows才可以用,而火狐免费开源。

4、WMP和VLC有什么区别?WMP只有买了windows才可以用,而VLC免费开源。

5、7Zip和winRAR有什么区别?winRAR收费,而7Zip免费开源。

总之一句话,windows上有什么好东西,linux上一定也有个免费开源的!

那么很显然,MFC和QT有什么重大区别? QT免费开源呗~O(∩_∩)O~

需要说明的是:QT在2009 年 5 月 11 日才宣布开源,而之前除了不开源外,也要收取不少费用。终于明白为啥MFC和Delphi竞争时很少有人去对比QT了,原来也是个收费的主,其实微软的Express一直都是免费。现在才宣布免费是不是太晚了?  (由于百度和维基的资料都不是很详细,所以Alberl对QT的授权不太清楚,维基上说有三种授权,百度上说【只有你购买了专业版或企业版,你才能够编写商业的】,不过LPGL也是2009年才增加的)虽然看了下授权,但是Alberl对QT的历史也不太清楚,麻烦小伙伴们能够给出一些详细的信息~O(∩_∩)O~

好吧,如果QT早10年免费开源,不知道现在VS还在不在,反正现在是错过鼎盛时期了。

嗯,MFC被抛弃了,WTL也貌似没戏了,那windows下有名的框架就只剩下QT了,QT当时的商业版本貌似收费要几千美金?(这个不太清楚),应该也是有免费版本的。刚刚查了一下资料:

原文链接:http://herisee.bokee.com/1929875.html (本文省略了部分内容)

标题:QT VS GTK

日期:2005.06.15

Qt 是一个跨平台的 C++ 图形用户界面库,由挪威 TrollTech公司出品,目前包括Qt, 基于 Framebuffer 的 Qt Embedded,快速开发工具 Qt Designer,国际化工具 Qt Linguist 等部分. Qt支持所有 Unix 系统,当然也包括 Linux,还支持WinNT/Win2k,Win95/98 平台。

Trolltech 公司在 1994 年成立,但是在 1992 年,成立 Trolltech 公司的那批程序员就已经开始设计 Qt 了,Qt 的第一个商业版本于 1995 年推出然后 Qt 的发展就很快了,下面是 Qt 发展史上的一 些里程碑:

1996 Oct KDE 组织成立

1998 Apr 05 Trolltech 的程序员在 5 天之内将 Netscape5.0 从 Motif 移植到Qt 上

1998 Apr 08 KDE Free Qt 基金会成立

......

2000 Oct 30 Qt/Embedded 开始使用 GPL 宣言

2000 Sep 04 Qt free edition 开始使用 GPL

但是真正使得 Qt 在自由软件界的众多 Widgets (如 Lesstif,Gtk,EZWGL,Xforms,fltk 等等)中脱颖而出的还是基于 Qt 的重量级软件 KDE 。 有趣的是,KDE 也是使得 Trolltech 公司承受巨大压力的一个原因。下面我们将来看看这场著名的自由软件圣战 -- "KDE/QT .VS. Gnome/Gtk" 是怎么发生的。

在 Unix 的图形界面一向是以 MIT 的 X Window 系统为标准, 可是在商业应用上有两大流派,一派是以 Sun 公司领导的 Openlook 阵营,一派是 IBM/HP 领导的OSF (Open Software Foundation) 的 Motif, 双方经过多年竞争之后, Motif 最终胜出,成为最普遍使用的界面库, 后来双方又妥协出一个 CDE(Common Desktop Enviroment) 作为一个标准的图形界面。 但是 Motif/CDER 的价格非常昂贵,在这同时微软的 Windows 图形界面发展速度非常快,而 Unix 界的后起之秀Linux 也急需一个可靠并且免费的图形界面。

1996 年 10 月,由开发图形排版工具Lyx的德国人 Matthias Ettrich 发起了 KDE计划。 KDE 的全称为 K Desktop Environment,可以看出是针对 CDE。 KDE 本身是采用 GPL 宣言的,但是 KDE 却是使用 Qt 来作为其底层库,因为当时 Qt 已经将其 Unix 版 本自由发布了,但是 Qt 并不遵循 GPL, 因此 KDE 被很多自由软件的作者攻击,认为利用非自 由软件开发违背了 GPL 的精神,于是 GNU 的狂热信徒兵分两路,一路是去制作 Harmonny,试图重写一套兼容于 Qt 的替代品,另一路是由一个 26 岁的墨西哥程序员 Miguel De Icaza 领导 下重新开发一套叫OME(GNU Network Object Enviroment)来替代 KDE。

由于 Linux 界的老大 RedHat 不喜欢 KDE/Qt 的版权,因此 RedHat 甚至专门派出了几个全职程序员来加入 GNOME 进行开发工作,于是一场同 Motif VS Openlook 相似的圣战就这么打起来了。 Trolltech 为了 KDE 曾数次修改 Qt 的版权,从成立 KDE Free Qt 基 金会到采用 QPL,可谓是费尽心机,但是 GNOME 采用的 GTK 一开始就是完全的 GPL,因此在这个方 面 GNOME 有一定的优势,加上 Qt/KDE 采用 C++ 开发,入门的门槛比较高,而 GTK/Gnome 采用 C, 因此GNOME 吸引了更多的自由软件开发者,但是 KDE 毕竟先走了一步, 推出的KDE1.1.2 十分稳定, 而当时急忙中推出的 GNOME1.0 的系统稳定性奇差,有人甚至笑称 GNOME1.0 还没有 KDE 1.0 Alpha 稳定。但是 GNOME 后来发展比较快,大有迎头赶上的势头。 当时双方的开发者在网络 上炒得天翻地覆,连 Linux 之父 Linus 只是说了一句喜欢用 KDE 都倍受指责。

战争到了第三个年头,也就是2000年,可谓是风云突变,一个接一个重大的事件先后发生: 首先是一批从 Apple 公司出来的工程师成立了一个叫 Eazel 的公司替GNOME 设计界面,然后是一批 GNOME 程序员成立了一个 Helix Code 公司替GNOME 提供商业支持,而大家期待以久的 KDE 2.0 也终于发布了,这恐怕是目前最为庞大的自由 软件了之一, 除了 KDE 本身,还包括 Koffice 套件,和集成开发环境 Kdevelop 等等大批软件,其主力软件 Kounqueror 也是第一个可以同微软的Internet Exploer 相抗衡的浏览器。 而 Sun 公司,Red Hat 公司, Eazel 公司, Helix Code 等一批公司成立了一个GNOME 基金会, Sun 还宣布将把重量级办公软件 Star office 同 GNOME 集成, Trolltech 公司自然不能坐以 待毙,于10 月4 日将 Qt 的 free edition 变为 GPL 宣言,彻底解决了 KDE 的版权问题, 又推出了嵌入式 Qt ,给了 GNOME 阵营一个有力的回击。

到现在为止,这场战争还在继续。一般说来, 目前GNOME 吸引的公司比较多,但是 KDE/Qt 的开发的效率和质量比GNOME 高,而且在 Office/嵌入式 环境中先走一步,在一定时间内还将处于优势地位。

那么对于用户来说,如何在 Qt/GTK 中作出选择呢?一般来说,如果用户使用C++,对库的稳定性,健壮性要求比较高,并且希望跨平台开发的话,那么使用 Qt是较好的选择, 但是值得注意的是,虽然 Qt 的 Free Edition 采用了 GPL 宣言,但是如果你开发 Windows 上的 Qt 软件或者是 Unix 上的商业软件,还是需要向Trolltech 公司支付版权费用的。

原来2000年以前,QT忙着跟GTK打仗去了,但是这是VC6.0早就火爆起来了,而在2009年才采用LGPL协议,要是2000年就采用LGPL协议,估计微软又有的忙了,也不会那么顺利的推广C#,而置VC++不顾了。好吧,一直以为QT早就免费和开源了,没想到2009年才完全免费开源。但历史没有如果,无论如何QT错过了鼎盛时期,并且被卖了两次。Alberl这个业余人士也就不好多说了,还请熟悉QT的网友给出详细的信息~O(∩_∩)O~

好吧,虽然收费对于天朝基本没有区别,但天朝的资料基本来自国外,所以国外用QT的公司少的话,那么开发者也就少,开发者少了,分享的资料就更少了。所以QT的吸引力还真的不是那么大。

QT的介绍就差不多了,回到前面,在MFC被抛弃,WTL貌似又没下文的情况下,已经用了这么多年的MFC,再贸然转向QT貌似也不太可能,不仅仅是技术问题,更重要的是之前的产品都是MFC和WTL开发的,难道说转就转?看来还是得再win32、MFC、WTL上做文章了。既然微软靠不住,那就只有靠其他厂家了,微软最会干这种事,自己提供一个平台,然后上面的浏览器、播放器什么的都让别人去开发更好的,双赢的局面,策略真高o(╯□╰)o。在MFC停滞不前的那些年,BCG(BCG Controlbar)、XTP(Xtreme Toolkit Professional)、Ultimate等界面库的生意就火啦,值得高兴的是Ultimate Toolbox、Ultimate Grid等一系列Ultimate产品在2007年的时候免费开源啦,并且现在还有更新。然后BCG的一部分控件也在VS2008被合并到了MFC。当然啦,在天朝收不收费没区别,所以除了MFC、WTL以外,还有很多的公司用BCG、XTP、Ultimate这些库,也能满足绝大部分需求啦o(╯□╰)o

不过可以知道的是,2008年那会,软件对界面的要求还没有像现在这么白热化,酷狗那时候还是个土鳖样,但是2011年酷狗7出来之后引起了一阵轰动,这让不少VC++的码农又兴奋了一阵。不过其实QQ、金山的界面早就很漂亮了,只不过一直都很漂亮,反差不大,所以没引起太大注意,但是酷狗之前是个土鳖样,换了界面一下子变成高富帅了,轰动是必然的。而后面QQ、金山的界面再一次全面升级,也是非常的精致,搞得国内对界面的竞争越来越激烈,这不,酷我的界面也换成Duilib了,终于赶上酷狗了。而百度从2011年开始大量开发客户端,并且几乎全线采用了duilib,做出的界面也是非常轻巧、快速、简洁,让人耳目一新。界面再一次引起轰动。

以上都是热门的大众的界面介绍,那下面来接着介绍小众的,也就是高手们的动态。

其实在WTL还在火热朝天的更新的时候,早就有大神另谋出路了,Bjarke Viksoe早在2005年6月的时候,就已经研究出WindowLess了(就是国内火爆的DirectUI),而第一篇最详细的WTL文档也是出自于他。再看看他的其他文章,可以看出他早就把WTL、MFC、ATL、,NET玩烂了,也就是说人家已经研究了微软的所有界面框架,再看看那篇WindowLess的文章,人家也借鉴了Java、.NET、DHTML、MFC消息机制、WTL。好吧,这几乎是所有的界面方式了,人家2005年就玩透了,注意,人家2005年已经研究出成果了,那就说明作者早就开始玩这些东东了,我看了他的一些WTL的文章,2001年6月就发布了,那个时候国内搞WTL的恐怕还没几个吧~~~  好吧,咱们又落后N年了o(╯□╰)o

说了这么多篇,都是在说老外的东西,难道国内真的没有值得一提的界面库吗?

其实不管界面竞争多么激烈,如果没有最近几年新出来的开源库的话,大部分公司都只能用WTL了(只有NB的公司才会自己开发界面库),虽然老外2005年就玩透了WTL、WindowLess,但是咱们这边流行WindowLess应该是2011年之后吧,2010年12月金山卫士开源了,也是一时轰动,其界面库也被单独的提炼了出来,当时Alberl下载了金山卫士的源码,可是到现在还没有去看o(╯□╰)o 2010年8月虽然duilib是第一个开源的DirectUI界面库,但当时还不稳定,所以不怎么引起注意,直到2011年7月28 1.1版本出来后(新增了一个QQDemo),就广为人知了 。

在7月1日的时候,Alberl已经来到大深圳实习了,那时也在找界面方面的资料,但是由于不太会找,所以没发现duilib,倒是发现了redui作者(浆糊哥)的文章,写得很好,但是4月份的时候胡大大还在寻求商业合作,可见duilib也没引起胡大大的重视,不过7月8日的时候开始准备开源了,直到12月4日才正式提供源码下载,Alberl找到duilib还是因为有个大神说自己做了个360的界面,我一看还真牛,但是只有exe,没有源代码,当时Alberl用spy等工具研究了一下,和腾讯的一样,抓不到窗口。不过当我研究dll的时候,发现dll的名字改过了,这就引起了我的注意,于是我按照dll的原名一搜,好家伙,原来是个开源库,然后就开始关注duilib了。 由于duilib也是刚出来不久,所以也不敢乱用,反正公司的界面MFC和自绘控件就能满足了,再加上Codeproject上的各种现有控件,还不急着用duilib,想着真正用的时候说不定他到2.0了,就一直关注着。不过再后来,2012年3月迅雷BOLT也开放了,但是不开放源码。再后来好像出现了很多开源库,国内的界面库又火了起来。当时对界面的议论热火朝天,什么还有一篇软文引起了广泛关注,作者虽然强调不是软文,但后来被VCBASK放到首页后,就暴露了~O(∩_∩)O~ 虽然是软文,但也给大家介绍了不少商业的、开源的界面库。 在金山、duilib、redui开源之后,加上迅雷也免费提供DirectUI库,是DirectUI再度升温,接着DirectUI就像火山爆发一样,一下子出来十几个开源的库(也有些是基于前面几家的),程序猿们一下子都不知道选哪个好,都在折腾和比较,DirectUI的春天真的来了吗?  是的,真的来了,至少我们很容易实现360和QQ那种界面了,即使还有很多不完善的地方,但比起MFC,那真是方便了几个等级。 但是,虽然2011 -- 2012年出来了十几个开源库,但是到2013年10月为止,已经没剩下几个了,虽然有个别大牛还在维护,但是他们的开源库没有被大公司采用,唯一被很多大公司采用的就只有duilib了,但悲催的是duilib的作者也早就不维护了。

当时这么多开源库出来,真是吓坏那些界面厂家了,不然也不会那么使劲去写软文,并且好多收费的要么降价,要么免费,真是像360一样打破了收费的局面。虽然现在这些开源库都不成气候了,界面厂家也松了一口气了,但收费也不敢标太高,毕竟那些开源库还在呢。说到商业库,大家公认最好的就是UIPower了,其他的就不提了,还不如用开源库。UIPower的产品确实做得很健全,不然也不会有华为、中兴那么多大客户,差不多垄断了界面行业,让其他家羡慕不已。但是UIPower在经历开源库风波之后,生意也大不如以前了,曾经引以为傲的华为,其华为网盘也采用开源库duilib了,后面酷我音乐也用duilib了,然后百度也用duilib了,在越来越多的大客户用duilib之后,小公司当然也会跟着用duilib啦。世界就是这样,一个产品只要有一个大公司用了,其他的大公司也会跟着用,大公司都用了,小公司就更不用说了,所以如果哪个库只要有一个大公司采用了,那么后面的用户就不用愁了,多拉几个大公司,就会有羊群效益。这也是为什么UIPower在开源库出来之前,越做越火,其他界面厂家只能干瞪眼的原因。同样,这也是在开源库出来之后,越做越捉急的原因。同样,这也是duilib越来越多的大公司用的原因。同样,这也是Alberl最先学习duilib的原因。

本来Alberl是准备单独花一篇文章来介绍国内的商业库和开源库的,这个在2011年和2012年的时候也许非常有意义,但是已经已经有很多讨论DirectUI的文章了,而且到2013年10月为止,前几年讨论的界面库大部分死掉了,所以Alberl只讨论了国内最大的商业库和最早的开源库。

如果想知道更多的商业库,百度DirectUI或者界面库,前面几个都是,要是想知道哪些公司财力比较足,一直有推广链接的那几个就是啦,Alberl看到那两个公司这几年都在推广链接。如果想知道更多的开源库,请去谷歌code搜索DirectUI,当然,也可以去github、SF、Codeplex等各大开源网站搜索。

嗯,DirectUI的介绍就暂告一段落了,还有其他界面库吗? 还记得【C++界面制作方法的对比 (9)】里面的内容吗? 那里说了3种方式,第一种由于没有大牛奉献开源库,或者奉献了但没成气候,所以只能选第2种了,即.NET 和 Native C++的组合,也就是NativeWPF, 而DirectUI虽然没有WPF强大,但也是NativeWPF的一个不错的实现了。那么第3种就是Web界面,Alberl本来也准备单独花一篇文章来介绍的,不过除了大小需要精简外,可能在本地操作有很大的限制,并且在客户端方面远不如Native C++成熟,所以不推荐菜鸟去折腾。不过Web界面也没啥可神奇的,把Web界面当成一个迷你浏览器就很容易理解了,上面提到的DHTML也是一种方式,Web界面也是非常多啦,和【100款 C++界面库】也有得一拼,其中htmlayout是比较著名的,完全用HTML + CSS来写界面,可以算得上个是很全面很棒的浏览器,并且专为做客户端而生,值得一试。其他比较有名的布局引擎请点这里,不过用Web来做客户端界面确实还不成熟,近几年才出来一些著名的开源库,比如2008年11月建立的Chromium Embedded  Framework,2009年6月建立的TideSDK,2012年3月建立的AppJS,前面有说过Web的界面表现力欠佳,但是TideSDK现在已经支持HTML5和CSS3了,那么表现力方面就不用担心的,就只剩下库的大小以及本地操作的一些限制。虽然Web做客户端的开源库也出来没多久,但是老外的开源项目常常是热火朝天的更新,而国内的开源项目通常会死掉,对比一下国内停滞不前的DirectUI,如果被WebUI淘汰了,也不是不可能的事。所以虽然目前WebUI可能还有很多不足,但老外这么使劲的更新,后来居上也是很正常的。

花了这么多篇来说界面框架,恐怕一时还消化不了,那么Alberl来做一个总结吧:

windows上做界面大体有四种方式:1、权威界面框架(.NET、MFC、WTL、QT等);2、游戏框架;3、Native和WPF组合(即用VC++和DirectUI); 4:Web框架。

1、很显然第一种方式是最主流、最稳定的。如果对语言无所谓,对大小也无所谓的,.NET是最佳选择! 如果对语言有要求,也就是必须使用C++的,但是对界面需求不是很高的,用这种也够了(即MFC、WTL),真的没必要折腾。其实2008年之前,这种方式已经非常够用了。虽然现在界面竞争很激烈,特别是移动客户端的流行,没个好看的界面都不好意思出来混。但即使是现在,WTL这种方式也很OK,比如魔方的那一套WTL库,用于多个软媒的产品,大小也很小,大部分工具在200K -- 400K的样子。 而金山界面库也是基于WTL的,做类似金山的产品已经够了(不过这是基于WTL开发的界面库,已经不仅仅是单纯使用WTL了)。wiz笔记等等,越来越多的公司使用WTL,所以WTL还是不错的选择。

2、第二种方式可以实现最炫的界面,但是没有成气候的开源库。

3、第三种方式在国内已经很火爆了,但是开源库都死掉了,基本没有维护。

4、第四种方式在国外火起来了,最好等两年看看,那个时候可能问题就解决的差不多了。

当然,有实力的公司用任何一种方式都OK,比如腾讯、金山自己开发界面库,豌豆荚精简Webkit等等。这里仅仅是针对没有实力开发,或者想快速使用现有资源的公司。

但是对于界面要求高的小公司,上述四种方式貌似也没有完全满意的,所以只能折中啦。Alberl目前比较看好的是第三种方式,这并不是因为Alberl深入了解了四种方式的优缺点。Alberl其实只深入了解了MFC,其他的都是根据现有资料进行总结,所以请小伙伴们明鉴,有错误请及时指正。

那么为什么Alberl选择第三种呢?

大家也看到了,金山虽然用WTL开发出了很漂亮的界面库,但是那个界面库不是说开发就能开发出来的。而第二种和第四种目前还没有太多的公司应用,只有第三种已经被众多知名的大公司应用了,例如百度几乎全系列产品、酷我、华为、金山等等。还有一点,就是redui的作者,也是对四种界面方式都研究了很久,最后选择了DirectUI,并开源了界面库。所以Alberl其实也是跟风的。

还有个原因就是,Alberl查了这么多资料,关注了好几年,虽然对这些库的形势比较了解,但毕竟是个门外汉,如果不去经历一场雪,永远都不了解雪花是什么样的。因此Alberl就选了一个看起来还算靠谱的界面库,先深入学习一下,才有资格进行进一步评论。

所以Alberl虽然选了duilib,但这并不一定是Alberl最终的选择,还记得上面提到的viksoe吗? 他是国内DirectUI的始祖,而且早就把上述4种方式研究透了。但是他却没火起来,并且2005年到现在已经有8年了,他的DirectUI还没更新。并且我看到他最后一次更新网站是在2013.9.1,http://www.viksoe.dk/code/all_news.htm,看到那里的spam filter、GMail Drive,难道作者的工作是做邮件方面的?Alberl一直有个疑问,viksoe大神最后到底选择了哪种方式去做界面? 为什么viksoe的WindowsLess没有火起来,国外究竟流行哪种方式?

仿迅雷播放器教程 -- C++ windows界面库对比(11)的更多相关文章

  1. 仿迅雷播放器教程 -- duilib界面(13)

    经过了这么多篇文章的讲解,相信大家也对界面库有一定了解了,用一个新的界面库,肯定要对它进行全方位考察.鉴于公司目前所有的产品都是MFC做的,全部转换成duilib肯定不现实,并且公司的很多项目逻辑和界 ...

  2. 仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)

        代码下载:http://download.csdn.net/detail/qq316293804/6409417   昨天的教程里写着预计MFC播放器会隔得久一点,但是今晚仔细看了下VLC的常 ...

  3. 仿迅雷播放器教程 -- 提取exe资源(12)

    既然选择了一个界面库,那么咱们就开始吧!     既然是仿迅雷播放器,那当然要把迅雷播放器的资源提取出来啦,但是很多小伙伴可能不知道怎么提取,所以这里就教大家一些方法: 一.传统的资源提取器     ...

  4. 仿迅雷播放器教程 -- C++ 100款开源界面库 (10)

      (声明:Alberl以后说到开源库,一般都是指著名的.或者不著名但维护至少3年以上的.那些把代码一扔就没下文的,Alberl不称之为开源库,只称为开源代码.这里并不是贬低,像Alberl前面那个系 ...

  5. 仿迅雷播放器教程 -- 基于ffmpeg的C++播放器 (1)

    2011年12月份的时候发了这篇博客 http://blog.csdn.net/qq316293804/article/details/7107049 ,博文最后说会开源一个播放器,没想到快两年了,才 ...

  6. 仿迅雷播放器教程 -- 封装VLC (5)

        虽然上个教程中10多行代码便做出了一个播放器,但如果加上快进快退等功能的话,代码都会挤在一团,阅读性很差,所以这个版本将对VLC进行封装,由于第一个教程已经进行了ffmpeg的封装,所以这里将 ...

  7. 仿迅雷播放器教程 -- 基于VLC的C++播放器 (4)

    经过前面的介绍,想必大家对VLC和ffmpeg都有一定印象了,还记得学习ffmpeg多么蛋疼吗?那么VLC会不会也这么蛋疼呢?     那么我们来看一段官方的Demo,Alberl精简了Demo,只留 ...

  8. 仿迅雷播放器教程 -- 十年经验大牛对MFC的认识 (7)

    由于上一个教程做界面用的是MFC,所以这里不得不说一下MFC的历史,请看正文:   原文链接:http://blog.csdn.net/sunhui/article/details/319551 作者 ...

  9. 仿迅雷播放器教程 -- C++界面制作方法的对比 (9)

        上一个教程对比的5个方向共7个界面框架,都是非常权威,应用很广泛的库,绝对是非常稳定,并且能够做出常见的界面出来,可以放心大胆的用在项目里.     但那7个界面框架再好,也总是没有绝对的优势 ...

随机推荐

  1. JDBC(7)—DAO

    介绍: DAO(Data Access Object):数据访问对象 1.what:访问数据信息的类,包含了对数据的CRUD(create read.update.delete),而不包含业务相关的信 ...

  2. Mysql启动失败

    错误提示: 服务名无效 错误原因: mysql服务没有安装. 解决方法: 管理员的权限运行cmd 用dos命令进入到mysql安装目录下再进入到bin目录下 运行mysqld -install命令

  3. Mac 安装配置nexus2.6 搭建Maven的中央仓库

    今天配置java 环境,安装nexus 百度了好久才安装好,所以特别写下来 分享给同样遇到问题的你.废话不多说,直接上步骤 前置条件 :已经安装了JDK 下载nexus(http://www.sona ...

  4. JSON序列——根据JSON生成事务性SQL2

    JSON序列——根据JSON生成事务性SQL2 procedure TForm1.Button3Click(Sender: TObject); begin var json:string:=''+ ' ...

  5. mac pro 如何让终端默认运行python3.X而不是2.7

    Mac版本的Python默认是2.7,安装高版本后需要修改为你安装的版本. 1,首先打开终端 open ~/.bash_profile 打开配置文件 2. 写入python的外部环境变量(本人的版本是 ...

  6. windows环境下面批量移动文件到指定文件夹里面

    move D:批量新建文件夹\upload\20171225173033565_2052.jpg D:批量新建文件夹\1623 move D:批量新建文件夹\upload\20171225174344 ...

  7. Autonomous driving - Car detection YOLO

    Andrew Ng deeplearning courese-4:Convolutional Neural Network Convolutional Neural Networks: Step by ...

  8. .NET 并行编程——数据并行

    本文内容 并行编程 数据并行 环境 计算 PI 矩阵相乘 把目录中的全部图片复制到另一个目录 列出指定目录中的所有文件,包括其子目录 最近,对多线程编程,并行编程,异步编程,这三个概念有点晕了,之前我 ...

  9. Notes中几个处理多值域的通用函数

    1.查找出查找内容在多值域中的索引值 getItemIndex(域名,域值,文档) Public Function getItemIndex(ByVal fieldName As String, By ...

  10. java的两种同步方式, Synchronized与ReentrantLock的区别

    java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock. 相似点: 这两种同步方式有很多相似之处,它们都是加锁 ...