到GuiLib上下载了他的最新版之后,首先便是编译链接的问题。考虑到软件的国际通用性,便选择了UNICODE方式进行编译,结果出现了20多个错误,主要集中在下面三个方面:
1、缺少头文件
提示信息:visualstylesxp.h(6) : fatal error C1083: Cannot open include file: 'uxtheme.h': No such file or directory。提示Uxtheme.h 和Tmschema.h找不到,而Schemadef.h是在Tmschema.h里调用的,所以我们还需要另外三个文件,这在VC6里面没有,包含在 Windows PlatformSDK安转了Visual Studio 2003或 Visual Studio 2005 中都有PlatformSDK。你若安装过,就不必费尽去下载385.0 MB的SDK了,默认安装的话三个文件都在C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include
(Uxtheme.h 中定义了在向控件添加外观风格的步骤中以及在相应的代码示例中所引用的 UxTheme API;Tmschema.h 中定义了各个类。听说要将WINVER,_WIN32_WINNT, _WIN32_WINDOWS定义为0x0501(支持XP)才能编译通过。)这三个文件在下面的地址有下载:
https://files.cnblogs.com/xcvm/Uxtheme.h.rar
复制三个文件到 GuiLib 目录下,把
#include <uxtheme.h>
#include <tmschema.h>
改为
#include "uxtheme.h"
#include "tmschema.h"
就可以正常编译了。
Windows? Server 2003 SP1 Platform SDK下载地址:
Windows? Server 2003 SP1 Platform SDK ISO Install(单个镜像文件)
http://download.microsoft.com/download/7/5/e/75ec7f04-4c8c-4f38-b582-966e76602643/5.2.3790.1830.15.PlatformSDK_Svr2003SP1_rtm.img
Windows? Server 2003 SP1 Platform SDK Full Download(多个压缩包)
http://www.microsoft.com/downloads/details.aspx?FamilyID=eba0128f-a770-45f1-86f3-7ab010b398a3&DisplayLang=en#filelistFile
2、ADO错误
在“GuiADODB.h ”文件中,没有定义“msado15.dll”文件的具体位置,可根据你系统的安装情况,更改为正确的位置即可。
3、字符串错误
这个是最主要的错误,大部分是因为使用UNICODE项进行编译时出现的。原作者在设计时,没有使用兼容MBCS/UNICODE的方式,故而需要进行更 改,具体可参阅下面的文章。http://vckbase.com/document/viewdoc/?id=1733
官网:
GUIToolkit
http://www.shengfang.org/blog/p/20080804GUITOOLKITstaticlib.php
http://www.shengfang.org/blog/p/20080804vcinterface.php
上面网址总结了很多东西.
GuiToolkit
GuiToolkit, MFC界面扩展库, 个人作品, 非常棒的类库, 完全free.
官方网站是 http://www.beyondata.com/default.htm
从预编译的二进制例子来看, GuiToolKit已经实现了一个完整而复杂界面的解决方案, 接近于很多商业的库, 如BCGControlBar. 可惜由于个人作品的关系, 几乎没有文档和技术支持(如果有的话, 岂非太完美了).
从得到的完整的源码来看, 在VC6下编译稍需修改一下,
1)头文件需要在VC中被检索到, 所以在VC Option中增加GuitoolKit/SourceCode/Personal/ExtLib/Header
2)原有的工程依赖关系不对,全部去掉即可.
3)import语句#import "Program FilesCommon FilesSystemADOmsado15.dll" 缺少驱动器符指示
4)在GuiFramWnd.h中包含的系统文件AFXIMPL.H路径不对, 将之从系统的MFC/SRC目录拷贝的ExtLib/Header即可.
基本上这样处理后,就可以正确编译大部分的例子代码了.
上篇文章文不对题的写了些废话,今天就言归正传。因为现在一直在进行MFC程序的编写,所以就具体说一下在VC6.0下使用第三方界面库的过程和感受。
目前,第三方界面库的种类很多,我从网上查了下,大致有Xtrme toolkit,BCGControlBar,SkinMagic,AppFace,Skin++,Uskin++,SYGUI,LibUIDK,GuiToolkit,GardenUI等等,除了后两种一个是开源,一个是免费的外,其余的都是收费的。
这其中的界面库,Xtrme toolkit是实验室一直在使用的库,这个库是非常有名的集专业和美观于一体的界面库,功能非常强大,可以说是一款重量级的界面库。但是在强大的背后,也有很多烦恼,该库中几乎所有的类都继承于MFC原有的基类,在原有特性的基础上增添了许多新的特性,但是当在程序中不需要这些特性的时候,如果对该库不熟悉或是对MFC程序的编写不是很熟悉的话,就会吃很多苦头,而且还会增加程序的臃肿性。毕竟在使用第三方库的时候,我们都是希望越简单方便越好,不用在这上面花很多精力,把精力都集中在算法的实现上。因此,该库的使用对于新手或是对MFC界面编写不是很熟悉的人来说,可能会是一件不那么容易的事情。
在我改造界面的过程中,考虑到该平台的界面不需要那么多的特性,只需要美观、可用性好一些就可以,再加上实验室的很多平台都是用Xtrme toolkit编写的,几乎看起来都是一样的脸。所以基于以上的原因,我开始寻找其它的相对轻量级又不失美观的库。于是我找到了比较合适的GuiToolkit。
GuiToolkit是一款比较实用的开源界面库,它提供WindowsXP样式的显示界面,相比Xtrme toolkit, 我觉得该库是一款轻量级的界面库。对界面要求不是非常高,但又追求美观效果的,可以考虑使用该库。由于该库是开源的,自己可以根据需要增加需要的特性,也 可以删减不需要的特性,但是说句实话,这也不是一件很容易的事情。因此对于需要方便使用的人来说,可以从该库提供的例子中来找到自己需要的模板样子,然后 修改成自己希望的样子。这样子的话,对只希望简单使用该库的人来说,就变得方便快捷许多。
下面就介绍下如何将GuiToolkit添加到自己的工程当中。
1、下载到GuiToolkit之后,将GuiLib工程编译,分别生成release和debug版本的dll和lib文件。
Release版本的dll和lib:GuiTk115.dll GuiTk115.lib
Debug版本的dll和lib:GuiTk115d.dll GuiTk115d.lib
2、将GuiTk115.dll GuiTk115d.dll分别拷贝到工程的Release和Debug版的生成可执行文件的文件夹下。
3、将GuiTk115.lib和GuiTk115d.lib拷贝到自己工程的lib文件夹下,然后分别通过VC6.0的选项Project->Settings->link添加到工程当中,并在Iuput选项下,设定好lib的文件路径。
4、将Guilib的头文件拷贝到自己工程的Include文件夹中。
当然,也可以通过VC6.0的选项Tools->Options->Directories设定Include和lib。
经过以上的步骤以后,自己的工程编译应该就没问题了。一开始,我还是建议用GuiToolkit提供的例子来进行编译,成功以后,自己就可以根据需要,参考例子,编写自己的界面了。希望该文对第一次使用GuiToolkit的朋友有所帮助。