XTToolkitPro使用初探
一. 创建MFC的SDI或MDI应用程序
在stdafx.h添加 #include <XTToolkitPro.h> // Xtreme Toolkit Pro component library修改的CMainFrame基类,对应为CXTPMDIFrameWnd
class CMainFrame : public CXTPFrameWnd
修改CMainFrame::OnCreate函数 注释掉原有的,添加下列代码
if (!InitCommandBars())
return -1;
return -1;
CXTPCommandBars* pCommandBars = GetCommandBars();
if(pCommandBars == NULL)
{
TRACE0("Failed to create command bars object.\n");
{
TRACE0("Failed to create command bars object.\n");
return -1; // fail to create
}
}
CXTPCommandBar* pMenuBar = pCommandBars->SetMenu( _T("Menu Bar"), IDR_MAINFRAME); if(pMenuBar == NULL)
{
TRACE0("Failed to create menu bar.\n");
return -1; // fail to create
} CXTPToolBar* pToolBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
if (!pToolBar || !pToolBar->LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1;
}
{
TRACE0("Failed to create menu bar.\n");
return -1; // fail to create
} CXTPToolBar* pToolBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
if (!pToolBar || !pToolBar->LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1;
}
CXTPPaintManager::SetTheme(xtpThemeOffice2003);编译运行,出现Offiice 2003主题风格的应用程序 资源包含,查看rc2资源文件代码,添加,在资源附加目录中添加所在目录使用的时候,只需要在StdAfx.h中加入下面的语句即可
#include <XTToolkitPro.h>
如果你选择static link,那么可以使用宏把不需要的部分排除掉,这样能减少最终生成的EXE的大小
#include <XTToolkitPro.h>
如果你选择static link,那么可以使用宏把不需要的部分排除掉,这样能减少最终生成的EXE的大小
//#define _XTP_EXCLUDE_COMMON
#define _XTP_EXCLUDE_TABMANAGER
#define _XTP_EXCLUDE_GRAPHICLIBRARY
//#define _XTP_EXCLUDE_CONTROLS
//#define _XTP_EXCLUDE_COMMANDBARS
//#define _XTP_EXCLUDE_DOCKINGPANE
//#define _XTP_EXCLUDE_PROPERTYGRID
#define _XTP_EXCLUDE_REPORTCONTROL
#define _XTP_EXCLUDE_CALENDAR
#define _XTP_EXCLUDE_TABMANAGER
#define _XTP_EXCLUDE_GRAPHICLIBRARY
//#define _XTP_EXCLUDE_CONTROLS
//#define _XTP_EXCLUDE_COMMANDBARS
//#define _XTP_EXCLUDE_DOCKINGPANE
//#define _XTP_EXCLUDE_PROPERTYGRID
#define _XTP_EXCLUDE_REPORTCONTROL
#define _XTP_EXCLUDE_CALENDAR
#define _XTP_EXCLUDE_TASKPANEL
#define _XTP_EXCLUDE_SHORTCUTBAR
#define _XTP_EXCLUDE_SKINFRAMEWORK
#define _XTP_EXCLUDE_RIBBON
#define _XTP_EXCLUDE_SYNTAXEDIT
另外值得注意的一点是,如果你选择static link,那么需要将XTPpane的资源导入你的工程之中。比如要使用中文资源,那么把下面的代码加入工程的rc2文件的最后
#define _XTP_RESOURCE_LANGUAGE zh_CN
#include &>
同时,你还需要修改一下XTP附带的中的内容
将最后的LANGUAGE_DEFAULT(TaskPanel)改成LANGUAGE_LOCALIZED(TaskPanel)
然后在TaskPanel\res目录下将复制成Resource_,并将其中的编码改
#define _XTP_EXCLUDE_SHORTCUTBAR
#define _XTP_EXCLUDE_SKINFRAMEWORK
#define _XTP_EXCLUDE_RIBBON
#define _XTP_EXCLUDE_SYNTAXEDIT
另外值得注意的一点是,如果你选择static link,那么需要将XTPpane的资源导入你的工程之中。比如要使用中文资源,那么把下面的代码加入工程的rc2文件的最后
#define _XTP_RESOURCE_LANGUAGE zh_CN
#include &>
同时,你还需要修改一下XTP附带的中的内容
将最后的LANGUAGE_DEFAULT(TaskPanel)改成LANGUAGE_LOCALIZED(TaskPanel)
然后在TaskPanel\res目录下将复制成Resource_,并将其中的编码改
成中文
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
#endif
否则你之后include的资源会变成默认的英文
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
#endif
否则你之后include的资源会变成默认的英文
二.认识XtremeToolkitPro的文件夹结构及文件用途
XtremeToolkitPro安装后,其文件夹结构如下图所示:
前面的几个文件夹就不用我说了,重点说说Utils里面的文件夹。
AppWizard:很显然是XtremeToolkitPro应用程序工程生成向导的文件夹,这一点后面再作详解。
Package:此文件夹里有一个动态库文件CodejockPackage.dll和一个1033的文件夹,文件夹1033及其下的CodejockPackageUI.dll应该是与UI有关的E文资源包。而DLL文件是被注册在注册表中VisualStudio\8.0\Packages项下的,应该是用作本地化的,具体用途是为Visual Studio提供本地化资源,还是作别的什么用途就不是很清楚了,因为笔者对本地化不是很了解,望有这方面经验的达人指点指点,呵呵。
Translations:文件夹是为ToolkitPro提供的多语言资源库。方便大家开发多语言版本的软件项目。
另外Utils文件夹下还有两个.exe文件,和,前者就不用我说了,是开发界面风格的工具,help中有它的使用说明手册。后者呢,是开发多语言版的资源编辑工具,不但可以用来编辑修改Translations文件
夹下的资源动态库文件(.DLL),生成新的语种资源动态库,还可以提取.exe中的资源(String Table、Menu和Dialogs中的字符串)生成.xml文件,然后Export to DLL,生成新的资源动态库。
然后是Workspace文件夹,在此之下的Resource文件夹是XtremeToolkitPro 支持的各国语言资源文件夹,其下又包括多个以ResourceXXX命名的文件夹,且每个文件夹下均包括、ResourceXXX_vc80.sln和ResourceXXX_vc80.vcproj三个文件(XXX代表语言名称)。打开.sln文件,整个解决方案里就只包括,由此可看出该工程仅仅是用来编译资源文件的。
而Resource文件夹下有.mak文件(Resource.mak)、项目文件(Resource_vc80.sln)、资源包的定义文件ResourcePackage.h、。由此可看出是为批量编译资源文件用的。
Samples文件夹下全是 各个Sample的.sln文件。
ToolkitPro文件夹下面是编译XtremeToolkitPro各种版本动态库用的项目文件。如果你修改
了ToolkitPro的原文件(如果你是这种牛人:->),你可以打开ToolkitPro_vc80.sln再次编译ToolkitPro界面库便可生成Unicode版本的动态库,或非Unicode动态库。
总结,由上述可以看到,XtremeToolkitPro不但为开发者提供了漂亮的界面库,而且为开发者开发多国语言的程序提供现成的界面相关语言资源库。顺便告诉大家,ToolkitPro还提供了类CXTPResourceManager,处理资源问题应该很方便哦,呵呵。使用方法在help里能到。
笔者之前通过ToolkitPro向导生成项目,结果界面部分却总是E文的,所以总感觉很不爽。至此,想要ToolkitPro显示中文,不再是难事了。哈哈!!
三. 让你的应用程序界面--ToolkitPro显示中文
打开ToolkitPro_vc80.sln项目,然后查看源代码,拉到文件最后,会发现如下的定义:
1#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
3#ifdef _WIN32
5LANGUAGE 9, 1
6
7#pragma code_page(1252)
9#endif //_WIN32
10
11#include "" // non-Microsoft Visual C++ edited resources
12
13#include "" // Standard components
14
15#endif
16
3#ifdef _WIN32
5LANGUAGE 9, 1
6
7#pragma code_page(1252)
9#endif //_WIN32
10
11#include "" // non-Microsoft Visual C++ edited resources
12
13#include "" // Standard components
14
15#endif
16
代码中定义包含的文件"" 是在ToolkitPro的Source文件夹下的,"" 文件集中定义的是界面库中各种控件的资源文件,咱们再打开"XTT
"文件,我们发现文件开头几行定义说明了一切问题。
1
2#define LANGUAGE_DEFAULT(ProdName) <##ProdName##\>
3
4#ifdef _XTP_RESOURCE_LANGUAGE
5
6 #define LANGUAGE_LOCALIZED__(ProdName, LangName) <##ProdName##\res\Resource_##LangName##.rc>
8 #define LANGUAGE_LOCALIZED_(ProdName, LangName) LANGUAGE_LOCALIZED__(ProdName, LangName)
10 #define LANGUAGE_LOCALIZED(ProdName) LANGUAGE_LOCALIZED_(ProdName, _XTP_RESOURCE_LANGUAGE)
12#else
14 #define LANGUAGE_LOCALIZED(ProdName) LANGUAGE_DEFAULT(ProdName)
2#define LANGUAGE_DEFAULT(ProdName) <##ProdName##\>
3
4#ifdef _XTP_RESOURCE_LANGUAGE
5
6 #define LANGUAGE_LOCALIZED__(ProdName, LangName) <##ProdName##\res\Resource_##LangName##.rc>
8 #define LANGUAGE_LOCALIZED_(ProdName, LangName) LANGUAGE_LOCALIZED__(ProdName, LangName)
10 #define LANGUAGE_LOCALIZED(ProdName) LANGUAGE_LOCALIZED_(ProdName, _XTP_RESOURCE_LANGUAGE)
12#else
14 #define LANGUAGE_LOCALIZED(ProdName) LANGUAGE_DEFAULT(ProdName)
16#endif
19#if !defined(_XTP_EXCLUDE_CALENDAR)
21#include LANGUAGE_LOCALIZED(Calendar) // _XTP_INCLUDE_CALENDAR
23#endif
24
26#if !defined(_XTP_EXCLUDE_COMMANDBARS)
28#include LANGUAGE_LOCALIZED(CommandBars) // _XTP_INCLUDE_COMMANDBARS
30#endif
19#if !defined(_XTP_EXCLUDE_CALENDAR)
21#include LANGUAGE_LOCALIZED(Calendar) // _XTP_INCLUDE_CALENDAR
23#endif
24
26#if !defined(_XTP_EXCLUDE_COMMANDBARS)
28#include LANGUAGE_LOCALIZED(CommandBars) // _XTP_INCLUDE_COMMANDBARS
30#endif
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论