上一个教程对比的5个方向共7个界面框架,都是非常权威,应用很广泛的库,绝对是非常稳定,并且能够做出常见的界面出来,可以放心大胆的用在项目里。
    但那7个界面框架再好,也总是没有绝对的优势,不然其他框架早就淘汰了,那么以下几个才是目前真正的顶级理想状态(过几年可能这些理想状态也不理想啦~):
1、用3D游戏的界面来做客户端界面,3D游戏的效果当然是世界顶级的啦,如果客户端能做成那样的效果,当然是非常爽,但其资源占用就决定了不可能用来做客户端。
    那么我们退而求其次呢?  用2D的总行了吧? 其资源占用还是太大了! 
    那再退一步呢? 不需要动画效果和各种特效,只需客户端那样静态的页面。由于游戏框架做界面比客户端框架灵活N倍,这样就可以即有游戏框架的灵活性,又有客户端一样的低资源占用,岂不是客户端界面最好的组合?  嗯,技术方面可行,但是游戏框架本来就不是为客户端而生的,所以要调整成客户端框架,普通人只能小打小闹,做一个界面出来可以,但要做出通用的框架,难度就非常大了。 所以,如果没有大牛去提炼游戏框架,那么用游戏框架做客户端就是扯淡。
    马云说过:如果一个点子有70%的人赞同,就说明这个点子已经被千万人想过了。 既然Alberl能想到这个,那肯定很多大牛已经做过这种事情了,Alberl也搜到过一些开源库,但不成气候,不然早就火了~
 
2、用.NET 和 Native C++,既然没有好用的游戏框架,那我们来点现实的吧,用WPF做界面,用C++做逻辑。
    其实如上个教程所说,.NET已经被广泛应用了,很多领域根本无需Native。
    在工业领域,比如考勤机、点菜机、KTV等领域,由于终端数量不多,都是由厂家直接安装软件,并且不需要很炫的效果,所以.NET的大小根本就不是问题,而运行也很快,因此在这些领域,那几个问题根本就可以忽略不计。
    而在移动领域,之前微软的WinCE、WinMobile都是用C#做界面,非常方便。现在的WP8也是用C# + SilverLight,根本就不支持C++开发,所以更不用谈Native C++了。而android最开始也不支持C++,所以现在真的不是C++一统天下了,就别想着什么事都用C++来搞定了,语言真的只是个工具而已。
    那么转向我们的客户端领域吧,上面已经说了,在非客户端领域,要么对界面要求不高,要么已有其他框架代替,真的不用蛋疼界面,只有客户端这个领域才是上不上下不下的。即使对于客户端,.NET除了要装.NET库以及慢点,其他方便真的是目前最好的了,91手机助手已经开了先河啦。但是现在这么多客户端在用C++,咱们还是得用C++做界面吧,那就还是不方便吧。
    那么我们不用WPF的特效,只用静态效果,就不会感觉到慢了吧,只需要低版本的.NET库就行了,也就是几十M,并且只需要在XP下装。不过如上个教程所说,除了.NET大以外,更重要的是程序员的水平,即使是C++的高手,全部切换过去做.NET,也不见得能搞得好,所以.NET还是不能用,C++为啥就这么蛋疼呢o(╯□╰)o  但是微软提供了一种折中的方案:用C++的语法,用.NET的功能,即CLR。 这虽然离【.NET 和 Native C++ 】差一点,但好歹也是【.NET 和 C++ 】吧,这不就解决了刚刚的语言切换的问题吗? 那看来就只剩下几十M  .NET库的问题啦,这听起来很不错,也确实能用将MFC的项目快速转换到.NET,这样老项目很快就可以用上.NET做漂亮界面啦。不过Alberl依旧相信一个道理:不管宣传得有多好,时间才是检验真理的唯一标准。显然,CLR出来很久了,没有被广泛运用起来。Alberl也说不出为什么,但Alberl会说:为什么这么久了,你还没火起来?
    可能有小伙伴想说了,以微软的实力,做一个用Native C++写逻辑,用.NET做界面,并且无需安装.NET库的框架出来,应该易如反掌吧? 那确实^_^
    如上所述,你能想到的,早就有人去做啦,有人就去微软的VC++版块提意见,问为什么不出个NativeWPF,即使不用C++,也很好呀。那我们就真的不用蛋疼客户端啦,屌爆了!!! 不过不要高兴,也不要期待微软会这么干。 VC++官方团队早就否定了这个意见,虽然没有说是公司的战略问题,但其实真的是微软的战略问题。C++好歹是别人的孩子,谁会丢下自己的亲儿子呢~ 从C#的功能来看,可以发现微软早十年就开始布局各大终端了,微软的目标就是一统天下,你干什么都用.NET就行啦。并且目前仍在继续,很多先进的NB功能都是只在C#里,C++只有仰望的份。 而WP8不支持C++开发,也让很多人转向了C#,总之,C++开发者越来越少,C#越来越多,那么微软一统天下的目标就更近啦。 可惜近几年被linux抢尽了风头,android已经严重威胁了微软,移动端的崛起已经让微软高度焦虑了。不说了,再说Alberl就有点担心客户端的命运了o(╯□╰)o   在其位谋其政,即使客户端未来可能会消亡,Alberl还是那句话,移动端还是需要一个漫长的发展,十年内还是不能完全代替客户端的,啥时不用PC敲代码了,才是终结的时候。 最重要的是,你十年的时间里只学习客户端?  Alberl可没这个打算,Alberl非常想学习各种知识,并且移动端的开发已经被安排在几年后的日程里了,所以Alberl从不担心MFC什么时候被淘汰,也不担心C++什么时候被淘汰
    扯到哪里去了?哎,微软不愿意做NativeWPF,但C++的界面好歹也是要做的吧,方案总是要有的吧。那确实,很多大牛已经做了,还是那句话,必须有大牛的无私奉献,否则一切都是扯淡。这个将在后面的教程介绍~
    国内用WPF最著名的就是QQ概念版了,并且效果非常炫,但QQ概念版早就停止了开发,也许并不仅仅是因为界面,但可以知道的是:如果从零开始用.NET开发出一个QQ,无论是界面方面,还是逻辑方面,都要花费巨大的代价!
 
3、用Web界面来做客户端界面,既然NativeWPF也没有非常权威的框架,那我们再现实一点吧,用Web做界面,这个可是有很多著名框架的哟。
    虽然前面两个方案做界面都是很nice的事情,但是没有知名的框架,对于我等菜鸟,目前是不可能去开发一个框架了,所以我们再退一步吧,虽然HTML的界面效果有很多限制,但是已经能满足绝大部分客户端需求了,并且其方便程度简直令小伙伴们惊呆了。但是总有人站出来说:又是几十M的库。好吧,Alberl觉得如果不大于40M,应该不用太在意吧,如果小于20M,那真的可以忽略啦。
    不过Web框架除了库的大小,真的有致命的缺点:
1、界面效果有限制,虽然HTML5可以解决这个问题,但是木有知名的框架。所以如果对界面要求不是特别高,只是想比普通客户端好看一点,用Web还是不错的。
2、跟JS交互搞死人,这个Alberl没有去做过,但是听朋友以及网上的大牛说,绝对可以搞死人。 不过有现成的框架在,这个也不用太担心啦。 但是如果没有验证好就贸然去用,后面如果实现不了某些功能,那就悲剧了。  所以推荐先验证一下某些重点功能能否实现,再做选择。
3、速度很慢。 这个倒可以忽略了,因为现有框架已经解决了这个问题。
    其中WebQQ也可以说是Web界面的顶峰了,上面有一整套QQ的产品,比如QQ客户端、QQ音乐、QQ飞车等一系列产品,整个WebQQ简直就是一个OS。但是光看WebQQ的桌面背景还好,如果一打开QQ客户端,或者QQ音乐、QQ飞车,那肯定会让你失望的。其实失望的不是界面效果,而是比较,因为界面效果确实很炫,比起很多客户端都好,但如果和PC上的QQ音乐、QQ飞车比起来,那真是失望了。所以Web界面的效果真的不是那么NB。
 
 
    好啦,三种做客户端的界面方法都介绍啦,第一种方法最好,但没有知名的框架;第二种其次,并且有一些框架,但离知名才差得远;  第3种最差,但已经有很多知名的开源库啦。后面的教程会一一介绍。虽然这三种方法看起来都比上一个教程中的7个框架方便,但实际上还有很多需要完善的地方。
    不得不说的是,其中WebQQ可以说是Web界面的顶峰,而QQ概念版可以说是.NET的顶峰,而QQ正式版是VC++的顶峰。所以QQ已经花了巨大财力、人力、时间去研究了几乎所有方式的界面,重要的是都付诸行动,并且达到了顶峰,TX真的很强大! 
    所以Alberl在这里做一个总结:
1、你能想到的,别人已经做了;你能做的,别人已经做到顶峰了;你醒悟时,别人早就成功了。
2、没有大牛无私奉献,任何方式都是扯淡
3、如果不是专业人士,就不要重复造轮子了,看看巨头们都干了啥!
 
    而Alberl不是大牛,所以无法去做一套框架;也不是专业人士,所以无法去利用现有成果重复造轮子;Alberl只是个小小菜鸟,什么好用就用什么,就算没有满意的,也只能选一个不满意的框架啦。下一个教程将介绍Alberl怎么在不满意的框架中选一个满意的~O(∩_∩)O~
 
 

仿迅雷播放器教程 -- C++界面制作方法的对比 (9)的更多相关文章

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

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

  2. 仿迅雷播放器教程 -- C++ windows界面库对比(11)

    从上一篇文章中可以看出,C++的界面方向还很弱,没有任何一个界面库可以一统天下,所以才造成了界面库百家争鸣的情况. 从时间上看: 1.出来最早的是QT,1991年就有了. 2.VC++ 虽然1992年 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. JVM的Client模式与Server模式

    概述 JVM有两种运行模式Server与Client.两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢:但是启动进入稳定期长期运行之后Server模式的程序运行速度比Clie ...

  2. Docker machine(Docker 虚拟机)

    安装docker [root@lianxi ~]# yum -y install docker 启动docker [root@lianxi ~]# systemctl start docker 下载D ...

  3. ELASTIC索引监控脚本

    报警方式自定义,我这里用的zabbix调用脚本监控 #!/bin/bash #power by kerwin #监控任意索引数据导入情况,若20分钟内无数据,报警触发 #使用方式,给脚本传索引名字的参 ...

  4. [原创]PostMan接口测试神器

    [原创]PostMan接口测试神器 1 PostMan是什么?  Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件. 2 Postman工具下载及安装 官方网站: htt ...

  5. ERROR: While executing gem … (Gem::RemoteFetcher::FetchError)

    原文地址:https://www.zfanw.com/blog/error-while-executing-gem-gem-remote-fetch-error.html 我对命令行下安装 gem 包 ...

  6. 通过html页面打开Android本地的app

    http://www.cnblogs.com/yejiurui/p/3413796.html 一.通过html页面打开Android本地的app 1.首先在编写一个简单的html页面 <html ...

  7. WinPcap权威指南(一)

    WinPcap是一个开源的网络抓包模块,顾名思义,它只能工作在Windows下,但本文介绍的知识并不局限于任何操作系统和开发语言,因为网络协议本身是没有这些区别的.阅读本指南之前,请先下载WinPca ...

  8. Oracle NID工具修改数据库DBID、数据库名称、数据库实例名

    DBID是数据库的唯一标识符,在一些特殊场合会涉及到DBID的相关内容,本篇文章的目的是演示将DB_NAME的值从ORCL修改为ORCL1. 一.查看当前的环境 [oracle@oracledb ad ...

  9. Ubuntu 下搭建 Android 开发环境(图文)

    转自 http://dawndiy.com/archives/153/ 1.安装JDK 1.下载JDK 目前最新的JDK版本是:Java SE Development Kit 7u5 下载地址: 查看 ...

  10. 基于Ubuntu部署 memcached 服务

    系统要求:Ubuntu 16.04.1 LTS 64 位操作系统 安装并启动 memcached 服务 安装 memcached 使用apt-get安装 memcached sudo apt-get ...