从上一篇文章中可以看出,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. 【【【超高仿】】】迅雷播放器教程 -- 总结——对界面开发介绍非常详细

    http://blog.csdn.net/qq316293804/article/details/14162539 版权声明:本文为博主原创文章,未经博主允许不得转载. 代码下载:http://dow ...

  2. 仿迅雷播放器教程 -- 总结(14)

    代码下载:http://download.csdn.net/detail/u012248739/6502965 迅雷播放器教程汇总: 仿迅雷播放器教程 -- 基于ffmpeg的C++播放器 (1) 仿 ...

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

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

  4. 仿迅雷播放器教程 -- 权威界面库对比 (8)

    上一个教程对MFC的历史已经介绍很多了,那么界面方面该怎么选择呢? 说起界面,那真是百家争鸣.C++里面其他的都好说,像什么XML解析顶多也就十几个著名开源库而已.Office 操作的开源库仅有几个, ...

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

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

  6. 仿迅雷播放器教程 -- 媒体播放三大底层架构简析 (3)

    上一个教程中对比了数十种知名播放器,最终选定了VLC和MPlayer,那么这两种谁更胜一筹呢?  我们来看一看射手播放器作者的评价. 来源: <http://blog.splayer.org/i ...

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

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

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

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

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

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

最新文章

  1. 基于Spring Cloud实现微服务前后端系统
  2. https://blog.csdn.net/cscscscsc/article/details/50
  3. 任正非认为自己的成功没有秘诀
  4. win7新建文件夹-快捷键
  5. ArcCatalog连接ArcSDE连接报:unable to create new database connection file,permission is denied
  6. 对Spring 容器管理事务支持的总结
  7. flash mx拖拽实例_Flash MX 2004中的像素溶解效果
  8. 聚类算法之层次聚类和密度聚类(图文并茂)
  9. 瑞星linux杀毒软件进程,高手请教:麻烦帮忙解释几个:瑞星杀毒软件的进程各表明什么?...
  10. 移动前端自适应适配布局解决方案和比较
  11. 互联网发展简史(1)ARPANET的建立
  12. Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not suppor
  13. 【XSY3952】简单的计数题(dp)
  14. SharpDevelop浅析_1_AddInTree
  15. EasyNVR纯H5摄像机直播解决方案前端解析之:RTSP安防监控实时直播的四分屏的前端展示方案
  16. IObit Uninstaller pro:完全卸载程序,自动清除残余及注册表
  17. 微生物是如何影响身体健康的
  18. LINUX 和ubu 分别设置Ip
  19. JSP+ssm计算机毕业设计服装销售进出货管理系统141r2【源码、数据库、LW、部署】
  20. mysql给用户重命名_MySQL如何修改用户名?(代码实例)

热门文章

  1. 西瓜书第四章阅读笔记
  2. 使用Solidworks、ADAMS、Simulink进行机电联合仿真
  3. 《SAP CRM管理与实施指南》一一1.2 SAP CRM解决方案概述
  4. 2021年煤矿采煤机(掘进机)操作考试及煤矿采煤机(掘进机)操作模拟试题
  5. 第一讲资金的运用—认识资产(财务分析与决策)
  6. delphi 调用youtube-dl命令,下载youtube视频,原理及源代码
  7. php小写金额转大写金额
  8. vmos切换安卓版本_虚拟大师VMOS——手机里的quot;虚拟机quot;
  9. dokuwiki使用教程--创建页面和命名空间
  10. idea 实现接口中方法的快捷键