金山卫士界面库——了解篇

最近一周了解了一下金山卫士开源库中的界面部分。

因为感兴趣的只是界面的部分,所以始终没下完整的代码,而是直接采用前人已经分离的库。

目的是使用的这套库做开发,所以目前没有对库本身的实现做很多了解,只是使用。

所有资料均也可以在金山开源论坛找到。地址是 bbs.code.ijinshan.com

概况,目前分离的界面库主要有

openkui,好像也叫kui,是由开源代码中CKuiXXX系列的界面库整理而成

bkwin,是由开源代码中CBkXXX系列的界面库,或者是部分,或者只是一个称呼,(有多个包叫bkWin,但内容又不相同)

bkuilib,也是开源代码中CBkXXX系列的界面库整理而成

后面的过程就是通过运行演示程序,初步体会使用界面库

 本人在此之前从未接触过WTL,一直在用MFC,开始也走了些弯路

开发环境是XP + VS2008Pro

结论及分析

有人说bkwin比kui新,也有人说只是两个体系,目前尚无定论,我更倾向于后者。

-----------------------------------------------------------

openkui,最先拿到的就是openkui,可以通过对照维护者blog上的说明进行生成

但需要注意的是,

1,网上有多个资源,有些可能是旧版,需要做的工作较多,最好从googlecode的svn下载最新的。

2,没有编译kscbase.vcproj的sln,自己生成一个或者把kscbase.vcproj加入kui.sln中;

3,debug配置是完整的,而release配置是不同的(引用路径等),如果发现一个能生成另一个不能,请参考1;

好处:

1,引用比较简单,只需直接引用kuilib.h头即可,有做成单独库的潜质。

2,有CKuiApp等,使用起来有点像MFC

3,界面资源使用zip打包,可以比较好的进行控制

4,工程中直接添加了wtl,tinyxml,zlib等第三方库,方便环境配置和管理

5,有一个界面编辑器,尽管是Alpha的,免费不开源的,但目前是唯一的有这个的

不足:

1,工程目录结构复杂,文件分散,有改进的余地。

2,头文件中很多处直接使用了3级以上的目录结构,感觉会有隐患;

3,tinyxml的cpp重复包含导致很多警告,zlib的警告,全局g_hInstance等等。

4,讲解资源偏少,这个对0基础的人很麻烦

================================================

bkwin,是论坛中讲解教程的中的文档,边听讲解边操作,很容易程序就通了。

但要注意的是:

教程中提到修改myApp.rc中的#include "atlres.h"为#include "wtl/atlres.h",避免找不到altres.h,

但这样修改存在一个问题就是,一旦通过vs修改rc文件,则vs会将此处复原,所以建议增加wtl目录为工程附加包含目录

论坛上还有一个文字版的入门,内容是不完整的,缺少了如何添加bkres部分资源等关键问题,做出来的界面是白茫茫的,即bkwin界面未显示

好处:

1,简单容易上手快,研究的人相对较多,

2,资源使用的文件,方便

缺点:

1,没有图形界面的设计器,需要自己写xml

2,教程中都需要配置开发环境,WTL和tinyxml等,不过经过简单改变,也可以将其集成到工程中

3,有多个包,但版本不同,有些乱。

----------------------------------------------------------------------------

bkuilib,是经过整理的bkwin,结构比较清爽

但要注意的是:

需要配置WTL,tinyxml环境,其中WTL的配置是常规配置

tinyxml比较特殊,首先是采用lib形式引入,可以自行改成源码形式;另外就是tinyxml版本要求在2.6.1以上,同时衍生一个问题bkwin的版本

不知道是不是维护者自行修改的。

好处:

1,代码目录结构清晰,

2,和bkwin基本一致,

缺点:

1,如果其中有自行修改的部分,随着bkwin升级,是否可能有隐患;

2,同样没有界面设计器

3,和bkwin比,有部分增加的代码,情况还不了解

4,项目配置中的tinyxml和wtl的配置有改进余地

原文地址:https://www.cnblogs.com/kevinzhwl/p/2174924.html