XTToolkitPro使用初探创建MFC的SDI或MDI应用程序在stdafx.h添加#include<XTToolkitPro.h>//XtremeToolkitProcomponentlibrary修改的CMainFrame基类,对应为CXTPMDIFrameWndclassCMainFrame:publicCXTPFrameWnd修改CMainFrame::OnCreate函数注释掉原有的,添加下列代码 if(!InitCommandBars()) return-1; CXTPCommandBars*pCommandBars=GetCommandBars(); if(pCommandBars==NULL) { TRACE0("Failedtocreatecommandbarsobject.\n"); return-1; //failtocreate } CXTPCommandBar*pMenuBar=pCommandBars->SetMenu( _T("MenuBar"),IDR_MAINFRAME); if(pMenuBar==NULL) { TRACE0("Failedtocreatemenubar.\n"); return-1; //failtocreate }CXTPToolBar*pToolBar=(CXTPToolBar*)pCommandBars->Add(_T("Standard"),xtpBarTop); if(!pToolBar||!pToolBar->LoadToolBar(IDR_MAINFRAME)) { TRACE0("Failedtocreatetoolbar\n"); return-1; } CXTPPaintManager::SetTheme(xtpThemeOffice2003);编译运行,出现Offiice2003主
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
风格的应用程序资源包含,查看rc2资源文件代码,添加xttoolkitpro.rc,在资源附加目录中添加xttoolkitpro.rc所在目录使用的时候,只需要在StdAfx.h中加入下面的语句即可#include<XTToolkitPro.h>如果你选择staticlink,那么可以使用宏把不需要的部分排除掉,这样能减少最终生成的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_TASKPANEL#define_XTP_EXCLUDE_SHORTCUTBAR#define_XTP_EXCLUDE_SKINFRAMEWORK#define_XTP_EXCLUDE_RIBBON#define_XTP_EXCLUDE_SYNTAXEDIT另外值得注意的一点是,如果你选择staticlink,那么需要将XTP的资源导入你的工程之中。比如要使用中文资源,那么把下面的代码加入工程的rc2文件的最后#define_XTP_RESOURCE_LANGUAGEzh_CN#include<XTToolkitPro.rc>同时,你还需要修改一下XTP附带的XTToolkitPro.rc中的内容将最后的LANGUAGE_DEFAULT(TaskPanel)改成LANGUAGE_LOCALIZED(TaskPanel)然后在TaskPanel\res目录下将Resource.rc复制成Resource_zh_CN.rc,并将其中的编码改成中文#if!defined(AFX_RESOURCE_DLL)||defined(AFX_TARG_CHS)#ifdef_WIN32LANGUAGELANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED#pragmacode_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项下的,应该是用作本地化的,具体用途是为VisualStudio提供本地化资源,还是作别的什么用途就不是很清楚了,因为笔者对本地化不是很了解,望有这方面经验的达人指点指点,呵呵。Translations:文件夹是为ToolkitPro提供的多语言资源库。方便大家开发多语言版本的软件项目。另外Utils文件夹下还有两个.exe文件,CommandBarsDesigner.exe和ResourceEditor.exe,前者就不用我说了,是开发界面风格的工具,help中有它的
使用说明
爱威a9效果器使用图word使用说明在哪儿钻床数控系统用户手册玻璃钢风机使用说明书控制器用户说明书
手册。后者呢,是开发多语言版的资源编辑工具,不但可以用来编辑修改Translations文件夹下的资源动态库文件(.DLL),生成新的语种资源动态库,还可以提取.exe中的资源(StringTable、Menu和Dialogs中的字符串)生成.xml文件,然后ExporttoDLL,生成新的资源动态库。然后是Workspace文件夹,在此之下的Resource文件夹是XtremeToolkitPro支持的各国语言资源文件夹,其下又包括多个以ResourceXXX命名的文件夹,且每个文件夹下均包括Resource.rc、ResourceXXX_vc80.sln和ResourceXXX_vc80.vcproj三个文件(XXX代表语言名称)。打开.sln文件,整个解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
里就只包括Resource.rc,由此可看出该工程仅仅是用来编译资源文件的。而Resource文件夹下有.mak文件(Resource.mak)、项目文件(Resource_vc80.sln)、资源包的定义文件ResourcePackage.h、ResourcePackage.rc。由此可看出是为批量编译资源文件用的。Samples文件夹下全是 各个Sample的.sln文件。ToolkitPro文件夹下面是编译XtremeToolkitPro各种版本动态库用的项目文件。如果你修改了ToolkitPro的原文件(如果你是这种牛人:->),你可以打开ToolkitPro_vc80.sln再次编译ToolkitPro界面库便可生成Unicode版本的动态库,或非Unicode动态库。
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
,由上述可以看到,XtremeToolkitPro不但为开发者提供了漂亮的界面库,而且为开发者开发多国语言的程序提供现成的界面相关语言资源库。顺便告诉大家,ToolkitPro还提供了类CXTPResourceManager,处理资源问题应该很方便哦,呵呵。使用
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
在help里能找到。笔者之前通过ToolkitPro向导生成项目,结果界面部分却总是E文的,所以总感觉很不爽。至此,想要ToolkitPro显示中文,不再是难事了。哈哈!!让你的应用程序界面--ToolkitPro显示中文打开ToolkitPro_vc80.sln项目,然后查看ToolkitPro.rc源代码,拉到文件最后,会发现如下的定义: 1#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 2 3#ifdef _WIN32 4 5LANGUAGE 9, 1 6 7#pragma code_page(1252) 8 9#endif //_WIN321011#include "XTToolkitPro.rc" // non-Microsoft Visual C++ edited resources1213#include "afxres.rc" // Standard components1415#endif1617代码中定义包含的文件"XTToolkitPro.rc"是在ToolkitPro的Source文件夹下的,"XTToolkitPro.rc"文件集中定义的是界面库中各种控件的资源文件,咱们再打开"XTToolkitPro.rc"文件,我们发现文件开头几行定义说明了一切问题。 1 2#define LANGUAGE_DEFAULT(ProdName) <##ProdName##\res\Resource.rc> 3 4#ifdef _XTP_RESOURCE_LANGUAGE 5 6 #define LANGUAGE_LOCALIZED__(ProdName, LangName) <##ProdName##\res\Resource_##LangName##.rc> 7 8 #define LANGUAGE_LOCALIZED_(ProdName, LangName) LANGUAGE_LOCALIZED__(ProdName, LangName) 910 #define LANGUAGE_LOCALIZED(ProdName) LANGUAGE_LOCALIZED_(ProdName, _XTP_RESOURCE_LANGUAGE)1112#else1314 #define LANGUAGE_LOCALIZED(ProdName) LANGUAGE_DEFAULT(ProdName)1516#endif17 1819#if !defined(_XTP_EXCLUDE_CALENDAR)2021#include LANGUAGE_LOCALIZED(Calendar) // _XTP_INCLUDE_CALENDAR2223#endif24 2526#if !defined(_XTP_EXCLUDE_COMMANDBARS)2728#include LANGUAGE_LOCALIZED(CommandBars) // _XTP_INCLUDE_COMMANDBARS2930#endif31//..3233 3435第一行定义了缺省的语言,第二行的标识_XTP_RESOURCE_LANGUAGE可以看出该标识是为使用不同的语言资料文件而定义标识的。那么只要在程序库中定义了该标识就可以让ToolkitPro使用相应的语言资源库了。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我猜想应该是为制作多国语言资源所用。因为定义了它,其后的资源文件就不会被定义了。也就是不会把资源编译进ToolkitPro的DLL中。若哪位达人做过多语言版本方面的软件研究,还望不吝赐教。XTP界面在Dialog里的实现1,确定你已经装好了XTP。2,修改目录:工具/选项/目录 includefiles : D:\MicrosoftVisualStudio\XtremeToolkitProv11.2.2\Source librarysfiles: D:\MicrosoftVisualStudio\XtremeToolkitProv11.2.2\Lib\vc603,工程/设置/C++ 在工程选项里面添加:/Zm200注意大小写。4,在stdAfx.h里面添加:#include<XTToolkitPro.h>5,在Dialog.h文件中,Dialog定义的地方改为:#defineCDialogSampleDlgBaseCXTPDialogBase<CXTResizeDialog>classCCardManageDlg:publicCDialogSampleDlgBase{public:。。。}6,在Dialog构造函数实现的地方改为:CCardManageDlg::CCardManageDlg(CWnd*pParent/*=NULL*/):CDialogSampleDlgBase(CCardManageDlg::IDD,pParent){。。。}7,dialog构造函数实现内,预先配置:XTPSkinManager()->SetApplyOptions(XTPSkinManager()->GetApplyOptions()|xtpSkinApplyMetrics);//这句必须有,XTPSkinManager()->LoadSkin(_T("Office2007.cjstyles"));//这句是设置一种风格,Office2007.cjstyles是风格文件名,要拷贝过来。8,增加变量:BOOLm_bInRepositionControls,m_bInitDone;CRectm_rcBorders;用于第9,10步中,重新设置组件位置和大小。9,在initdialog里面添加:VERIFY(InitCommandBars());//XTP带,预处理,不可少。CXTPCommandBars*pCommandBars=GetCommandBars();//CXTPCommandBars管理TOOLBAR,Menu和status./***开始添加菜单***/pCommandBars->SetMenu(_T("MenuBar"),IDR_MENU1);CXTPToolBar*pToolBar=pCommandBars->Add(_T("Standard"),xtpBarTop);pToolBar->LoadToolBar(IDR_MAINFRAME);XTPImageManager()->SetIcons(IDR_MAINFRAME);//图标pCommandBars->GetCommandBarsOptions()->ShowKeyboardCues(xtpKeyboardCuesShowWindowsDefault);//额外的。pCommandBars->GetToolTipContext()->SetStyle(xtpToolTipOffice);//额外的。//pCommandBars->GetShortcutManager()->SetAccelerators(IDR_ACCELERATOR);//快捷键LoadCommandBars(_T("CommandBars"));//XTP必须/****下面是为解决MENU和TOOLBAR引起的错位,通过迭代对所有子组件重拍******/CWnd*pwndChild=GetWindow(GW_CHILD);while(pwndChild){ SetResize(pwndChild->GetDlgCtrlID(),SZ_TOP_LEFT,CXTResizePoint(0,0));//0,0表示水平和竖直方向都不缩放。 pwndChild=pwndChild->GetNextWindow();}m_bInitDone=TRUE;RepositionControls();//重设组件位置和大小,实现见10.m_szMin=m_szWindow;AutoLoadPlacement(_T("Placement"));10,实现RepositionControls();//重设组件位置和大小,无需看,直接复制。voidCCardManageDlg::RepositionControls(){if(m_bInRepositionControls||!m_bInitDone) return;CRectrcClientStart;CRectrcClientNow;GetClientRect(rcClientStart);if((GetStyle()&WS_MINIMIZE)||(rcClientStart.IsRectEmpty())) return;m_bInRepositionControls=TRUE;RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,rcClientNow);CRectrcBorders(rcClientNow.left-rcClientStart.left,rcClientNow.top-rcClientStart.top, rcClientStart.right-rcClientNow.right, rcClientStart.bottom-rcClientNow.bottom);if(rcBorders!=m_rcBorders){ CPointptOffset(rcBorders.left-m_rcBorders.left,rcBorders.top-m_rcBorders.top); CSizeszOffset(rcBorders.left+rcBorders.right-m_rcBorders.left-m_rcBorders.right, rcBorders.top+rcBorders.bottom-m_rcBorders.top-m_rcBorders.bottom); CRectrcWindow; GetWindowRect(rcWindow); rcWindow.BottomRight()+=szOffset; Offset(ptOffset); m_szWindow+=szOffset; m_szMin+=szOffset; MoveWindow(rcWindow,TRUE);}m_rcBorders=rcBorders;RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);m_bInRepositionControls=FALSE;}11,添加状态栏的方法:状态栏变量:CXTPStatusBarm_wndStatusBar;在ONinitdialog里面加:if(!m_wndStatusBar.Create(this)|| !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))){ TRACE0("Failedtocreatestatusbar\n"); return-1; //failtocreate}m_wndStatusBar.SetPaneInfo(0,ID_SEPARATOR,SBPS_STRETCH,100);在合适的地方调用m_wndStatusBar.SetWindowText(lpsz);即可设置显示文本/***下面这句有时间看看**/LRESULTCDialogSampleDlg::OnKickIdle(WPARAM,LPARAM){if(GetCommandBars())GetCommandBars()->UpdateCommandBars();if(m_wndStatusBar.GetSafeHwnd())m_wndStatusBar.SendMessage(WM_IDLEUPDATECMDUI,TRUE);return0;}3 添加智能菜单1.添加Id数组,看起来这一步对用户不太重要。staticUINTuHideCmds[]={ID_FILE_PRINT,ID_FILE_PRINT_PREVIEW,ID_WINDOW_CASCADE};2.在CMainFrame::OnCreate中添加智能菜单的初始化。//HidearrayofcommandspCommandBars->HideCommands(uHideCmds,_countof(uHideCmds));//Set"AlwaysShowFullMenus"optiontotheFALSEXTP_COMMANDBARS_OPTIONS*pOptions=pCommandBars->GetCommandBarsOptions();pOptions->bAlwaysShowFullMenus=FALSE;3.为CMainFrame的OnCreate函数添加LoadCommandBars(_T(“CommandBars”)),这将恢复先前工具栏和菜单及一些所作的定制。intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){...//Loadthepreviousstatefortoolbarsandmenus.LoadCommandBars(_T("CommandBars"));return0;}4.为CMainFrame添加OnClose消息的处理,添加SaveCommandBars(_T(“CommandBars”));在调用基类之前,这将存储先前用户使用过的命令。voidCMainFrame::OnClose(){//Savethecurrentstatefortoolbarsandmenus.SaveCommandBars(_T("CommandBars"));CMDIFrameWnd::OnClose();}4 自定义主题为应用程序添加一个定制的theme1.创建一个从toolkit中预定义的theme中派生的新类。我们使用CXTPDefaultTheme,你可以使用以下任何一个theme类:-CXTPDefaultTheme得到Office2000theme-CXTPOfficeTheme得到OfficeXPtheme-CXTPOffice2003Theme得到Office2003theme-CXTPNativeXPTheme得到NativeXPthemeclassCDoubleGripperTheme:publicCXTPDefaultTheme{};2.重载CXTPDefaultTheme基类的DrawCommandBarGripper。这将允许添加我们自己定制的外观,画命令栏的把手(gripper)。classCDoubleGripperTheme:publicCXTPDefaultTheme{virtualCSizeDrawCommandBarGripper(CDC*pDC,CXTPCommandBar*pBar,BOOLbDraw);};//DrawCommandBarGripperfunction.//ifbDrawifFALSEmustreturngrippersize.//ifbDrawisTRUEmustdrawgripper.CSizeCDoubleGripperTheme:rawCommandBarGripper(CDC*pDC,CXTPCommandBar*pBar,BOOLbDraw){//IfToolbarisverticaldockedif(pBar->GetPosition()==xtpBarRight||pBar->GetPosition()==xtpBarLeft){if(bDraw){CXTPClientRectrc(pBar);Draw3dRect(pDC,CRect(3,3,rc.right-3,6),COLOR_BTNHILIGHT,COLOR_3DSHADOW);Draw3dRect(pDC,CRect(3,7,rc.right-3,10),COLOR_BTNHILIGHT,COLOR_3DSHADOW);}returnCSize(0,10);}//ifToolbarishorizontaldockedelseif(pBar->GetPosition()==xtpBarTop||pBar->GetPosition()==xtpBarBottom){CXTPClientRectrc(pBar);if(bDraw){Draw3dRect(pDC,CRect(3,3,6,rc.bottom-3),COLOR_BTNHILIGHT,COLOR_3DSHADOW);Draw3dRect(pDC,CRect(7,3,10,rc.bottom-3),COLOR_BTNHILIGHT,COLOR_3DSHADOW);}returnCSize(10,0);}elsereturnCXTPDefaultTheme:rawCommandBarGripper(pDC,pBar,bDraw);}3.在CMainFrame的OnCreate函数中调用CXTPPaintManager::SetCustomTheme,应用刚才创建的theme。intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){...//Useourownthemefordrawingcommandbargrippers.CXTPPaintManager::SetCustomTheme(newCDoubleGripperTheme());return0;}