Xtreme.Toolkit.Pro v11.2.1 汉化方法及全过程

来源:互联网 发布:JS在图片上录入文字 编辑:程序博客网 时间:2024/05/29 11:53

摘自:http://blog.csdn.net/SummerHeart/archive/2008/05/05/2395761.aspx

前言
Xtreme.Toolkit.Pro作为VC++/MFC平台下目前最流行的GUI界面库之一,笔者在此不作过多介绍。不了解的朋友请访问其官方网址:

官方网址:http://www.codejock.com

试用版下载地址:到笔者写此文章时为v12.0.0

http://www.codejock.com/downloads/

笔者手上的是v11.2.1 Full.Source版,所以它能支持Visual Studio 6.0、Visual Studio 2003、Visual Studio 2005、Visual Studio 2008,不过笔者汉化仅限在Visual Studio 2005中完成,并未在别的Visual Studio版下试用过,但我想也应该没有什么问题,感兴趣的朋友可以自己尝试着应用到别的VS版下、笔者在此很有兴趣与大家一起相互交流经验。

由于上述原因,本文只针对Visual Studio 2005作详述,并且请大家对应上Xtreme.Toolkit.Pro中相应的文件夹vs8.0的相应内容。

认识Xtreme.Toolkit.Pro的文件夹结构及文件用途
       Xtreme.Toolkit.Pro安装后,其文件夹结构如下图所示:

 

前面的几个文件夹就不用我说了,重点说说Utils里面的文件夹。

AppWizard:很显然是Xtreme.Toolkit.Pro应用程序工程生成向导的文件夹,这一点后面再说详解。

Package:此文件夹里有一个动态库文件CodejockPackage.dll和一个1033的文件夹,文件夹1033及其下的CodejockPackageUI.dll应该是与UI有关的E文资源包。而DLL文件是被注册在注册表中VisualStudio/8.0/Packages项下的,应该是用作本地化的,具体用途是为VS提供本地化资源,还是别的什么就不是很清楚了,因为笔者对本地化不是很了解,望有这方面经验的达人指点指点,呵呵。

Translations:文件夹是为界面库提供的多语言资源库。方便大家开发多语言版本的软件项目。

另外Utils文件夹下还有两个.exe文件,CommandBarsDesigner.exe和ResourceEditor.exe,前者就不用我说了,是开发界面风格的工具,help中有它的使用说明手册。后者呢,是开发多语言版的资源编辑工具,不但可以用来编辑修改Translations文件夹下的资源动态库文件(.DLL),生成新的语种资源动态库,还可以提取.exe中的资源(String Table、Menu和Dialogs中的字符串)生成.xml文件,然后Export to DLL,生成新的资源动态库。

然后是WorkSpace文件夹,Resource文件夹是Xtreme.Toolkit.Pro 支持的各国语言资源文件夹,其下又包括多个以ResourceXXX命名的文件夹,且每个文件夹下均包括Resource.rc、ResourceXXX_vc80.sln和ResourceXXX_vc80.vcproj三个文件(XXX代表语言名称)。打开.sln文件,整个解决方案里就只包括Resource.rc,由此可看出该工程仅仅是用来编译资源文件的。

而Resource文件夹下有mak文件(Resource.mak)、项目文件(Resource_vc80.sln)、资源包的定义文件ResourcePackage.h、ResourcePackage.rc。由此可看出是为批量编译资源文件用的。

Samples文件夹下全是 各个Sample的.sln文件。

ToolkitPro文件夹则是编译XtremeToolkit各版动态库用的项目文件。如果你修改了界面库的原文件(如果你是这种牛人:->),你可以打开ToolkitPro_vc80.sln再次编译ToolkitPro界面库便可生成unicode版本的动态库,或非unicode动态库。

总结,由上述可以看到,Xtreme.Toolkit.Pro不但为开发者提供了漂亮的界面库,而且为开发者开发多国语言的程序提供现成的界面相关语言资源库。顺便告诉大家,Toolkit.Pro还提供了类CXTPResourceManager,处理资源问题应该很方便哦,呵呵。使用方法在help里能找到。

笔者之前通过Toolkit.Pro生成项目,界面部分总是E文的,所以总感觉很不爽。至此,想要界面库显示中文,不再是难事了。哈哈!!

让你的应用程序界面--Toolkit.Pro显示中文
打开ToolkitPro_vc80.sln项目,然后查看ToolkitPro.rc源代码,拉到文件最后,会发现如下的定义:

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

#ifdef _WIN32

LANGUAGE 9, 1

#pragma code_page(1252)

#endif //_WIN32

#include "XTToolkitPro.rc"  // non-Microsoft Visual C++ edited resources

#include "afxres.rc"         // Standard components

#endif

代码中定义包含的文件"XTToolkitPro.rc"  是在Toolkit.Pro的Source文件夹下的,"XTToolkitPro.rc"  文件集中定义的是界面库各种控件的资源文件,咱们再打开"XTToolkitPro.rc"文件,我们发现文件开头几行定义说明了一切问题。

 

#define LANGUAGE_DEFAULT(ProdName) <##ProdName##/res/Resource.rc>

 

#ifdef _XTP_RESOURCE_LANGUAGE

    #define LANGUAGE_LOCALIZED__(ProdName, LangName) <##ProdName##/res/Resource_##LangName##.rc>

    #define LANGUAGE_LOCALIZED_(ProdName, LangName) LANGUAGE_LOCALIZED__(ProdName, LangName)

    #define LANGUAGE_LOCALIZED(ProdName) LANGUAGE_LOCALIZED_(ProdName, _XTP_RESOURCE_LANGUAGE)

#else

    #define LANGUAGE_LOCALIZED(ProdName) LANGUAGE_DEFAULT(ProdName)

#endif

 

#if !defined(_XTP_EXCLUDE_CALENDAR)

#include LANGUAGE_LOCALIZED(Calendar)         // _XTP_INCLUDE_CALENDAR

#endif

 

#if !defined(_XTP_EXCLUDE_COMMANDBARS)

#include LANGUAGE_LOCALIZED(CommandBars)      // _XTP_INCLUDE_COMMANDBARS

#endif

 

头一行定义了缺省的语言,第二行定义的标识_XTP_RESOURCE_LANGUAGE可以看出定义的即是语言的标识。那么只要在程序库中定义该标识就可以使界面库应用相对应的语言资源库了。HoHo!打开Source文件下每个控件的文件夹下都可以看到许多后缀为.rc的资源文件,由资源文件的名称,再由定义:

 

#define LANGUAGE_LOCALIZED__(ProdName, LangName) <##ProdName##/res/Resource_##LangName##.rc>

 

可以很容易猜得到中文的定义为zh_CN,自然可知定义中文的语句即为:

 

#define _XTP_RESOURCE_LANGUAGE zh_CN

 

那么应该定义在哪。我的做法是定义在ToolkitPro.rc文件的头几行,因为该文件是编译界面库的项目文件中的文件,与ToolkitPro的源代码没有关系,因此尽可能不影响源代码为佳。
接下来再找到下面一行:
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
改为-->
LANGUAGE  LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
再次重新生成一下各种版本的动态库(编译你需要的版本就够了,全编译很费时的!:D),然后再运行你的应用程序,Bingo!界面元素的窗口、工具条等等,比如工具条自定义窗口都变成中文了
Ps: 我想说说ToolkitPro.rc文件中的

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

………

#endif

标识AFX_RESOURCE_DLL这个标识我猜想应该是为制作多国语言资源所用。因为定义了它,其后的资源文件就不会被定义了。也就是不会把资源编译进界面库的dll中。若哪位达人做过多语言版本方面的软件研究,还望不吝赐教。

初探Visual Studio 2005的向导模板
现在让我们来看看Visual Studio 2005的向导都由哪些文件组成,并且向导是如何工作的。若你创建过“自定义向导”工程,对下面的内容应该熟悉了,那么可以跳过下面的表内容。      

下表描述由“自定义向导”创建的文件


文件
 说明
 
Project.vsz
 它标识向导引擎并提供上下文和可选的自定义参数。
 
Project.vsdir
 在 Visual Studio 外壳程序与向导项目中的项之间提供路由服务的文本文件。
 
HTML 文件(可选)
 向导可以包含用户界面 (UI),即 HTML 界面。没有 UI 的文件不包含任何 HTML 文件。

Default.htm 是指定用户界面中的功能的文件。如果在“自定义向导”的应用程序设置中指定多个页,则每个附加文件均命名为 Page_PageNum.htm。
 
脚本文件
 向导访问脚本引擎并为每个项目创建一个 JScript 文件 Default.js。它还包括 Common.js。这些文件包含访问Visual C++ 向导、代码和环境对象模型以自定义向导的 JScript 函数。可以在向导项目的 Default.js 文件中自定义和添加这些函数。
 
模板
 向导模板是包含指令的文本文件的集合,这些指令根据向导用户的选择被分析并插入符号表中。模板文本文件根据用户输入呈现并添加到项目中。获取适当信息的方法是直接访问向导控件的符号表。
 
Templates.inf
 文本文件,列出与项目关联的所有模板。
 
Default.vcproj
 .xml 文件,包含有关项目类型的信息。
 
Sample.txt
 模板文件,显示如何使用向导指令。
 
ReadMe.txt
 模板文件,包含“自定义向导”所创建的每个文件的摘要。
 
Images(可选)
 可以提供任何图像(如图标、GIF、BMP 和 HTML 支持的其他图像格式)增强向导的 UI。没有 UI 的向导不需要图像。
 
Styles.css(可选)
 定义 UI 样式的文件。如果向导没有用户界面,则“自定义向导”不创建 .css 文件。
 

 

打开Toolkit.Pro 的文件夹Utils/AppWizard/vc80/vcProjects会发现有三个向导配置文件。

XTPAppWizard.ico

XTPAppWizard.vsdir

XTPAppWizard.vsz

这三个文件在运行Deploy.exe 的时候,会被复制到VS路径的VC/vcprojects文件夹下。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/SummerHeart/archive/2008/05/05/2395761.aspx 

原创粉丝点击