天天看点

客户端GUI程序开发漫谈

这篇文章包含了这个领域的很多开源项目的介绍,还有我多年来的心血和汗水

说实在的,QT确实挺强大的,

如果你有一个项目,需要跨平台GUI开发,你又有一个C++团队的话,

那么做技术选型的时候,可以负责任的说,QT是不二之选

我想说的是GTK+对windows平台的支撑力度实在是少的可怜

而且大部分常见的控件在windows上都没有

只知道它是在原生图形API上再做的包装,想想windows API搞出来的窗口有多古板,还是算了。

这个项目还是in progress状态。

总之,这两个项目都不能用于生产。

(我本想说,国内轮子兄...,但貌似他也已经肉身FQ了,再提国内也不对了)

gacui的原理我不太清楚,只知道有GPU加速。

在国内开发GUI应用程序,更多的还是给windows平台下的用户用

如果你想最大自由度的定制你的界面,又不想让你的程序的发型版看起来太大

那么duilib是个不错的选择,但duilib文档太少(作者自己也这么说),你要做足这方面的准备

好在是开源的,你C++够牛的话,也不用担心

当然如果你希望有完善的文档来给你提供帮助的话,

那么你可以选择Qt,毕竟是国外大厂商,源码、IDE、文档、社区都很齐全

但是Qt的依赖库库实在太多,你开发好的程序怎么着也得有个十几兆,才能分发给别人。

好吧,如果你足够厉害、有一台性能超赞的电脑、有一两个小时的时间,你可以尝试静态编译QT

如果你开发的GUI程序只给windows平台下的用户用

那么最最基本的三个选择:windows api、MFC、WTL

用windows api做GUI程序,比较辛苦,因为它就是一系列的API,所有的事情都得你自己来做

MFC是一套非常庞大的类库,他里面包含了一系列的C++的机制,用起来非常繁琐

WTL比MFC简单,比windows api易用,但资料很少

好,再来说用混合开发技术做GUI程序

这种技术方式的主要原理就是:

你写代码包住浏览器内核,

界面代码用HTML/CSS/JS完成(这是最大的优势,你可以用所有与之相关的库)

所有与界面渲染相关的事情交给浏览器内核完成,

所有与系统相关的事情你自己完成

这项技术在移动端用的挺好的,

如果你要做一个移动端的项目,又打算走混合开发这条路的话,

appcan很早之前了解过一点,貌似是收费的

PC端的混合开发就不那么火了,

但有很多大厂偷偷也在用这个技术,比如:鹅厂

如果你要做PC端的混合开发,

你有三条路可以走,

如果你要选用IE浏览器的内核,

那么你就不可能考虑跨平台的事情了,

而且,因为你的用户可能使用了不同的windows操作系统

所以你要做好客户端IE浏览器版本不一致的准备

IE6\7\8\9\10\11...

到IE9才可以称得上现代化的浏览器,市面上很多前端库,也只兼容到IE9

用IE内核来做这个事情的好处是:

你不用把浏览器的一堆DLL,分发给你的客户,这是其他三个方案所不能比的。

webkit和firefox真是挺尴尬的

性能表现没有谷歌浏览器好

平台支撑没有IE浏览器好

我对firefox浏览器的Gecko内核几乎没有什么研究

(之前做浏览器插件的时候看过他的API,现在几乎都忘记了)

Qt在去年之前还只有对webkit的封装

大家可以研究一下,但请不要用于生产,我已经不再维护这个库了

终于说到谷歌浏览器的内核:chromium

我实在是不建议直接研究它

这个项目是用C++对chromium做的包装

如果你是C#开发人员,也想用CEF的话,

这三个项目我都用过,目前的状况来看,我推荐最后一个

<a href="http://www.cnblogs.com/liulun/p/4470577.html" target="_blank">我曾经写过一系列的文章来介绍这个东西</a>

你如果是一个JS开发人员的话,

有我nodejs的庇佑,你完全不用care   CEF这种东西

这个东西,我也用过,

除了nodejs带来的那些缺点,

他几乎是完美的,非常不错,推荐使用

还想再多说一些,但忽然发现,篇幅已经太长了,借曹雪芹的一首诗止笔:

满纸荒唐言!一把辛酸泪!一把辛酸泪!一把辛酸泪!.......

继续阅读