




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
XTToolkitPro使用初探創(chuàng)建MFC的SDI或MDI應(yīng)用程序在stdafx.h添加 #include / Xtreme Toolkit Pro component library修改的CMainFrame基類,對(duì)應(yīng)為CXTPMDIFrameWndclass CMainFrame : public CXTPFrameWnd修改CMainFrame:OnCreate函數(shù) 注釋掉原有的,添加下列代碼 if (!InitCommandBars() return -1; CXTPCommandBars* pCommandBars = GetCommandBars(); if(pCommandBars = NULL) 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 toolbarn); return -1; CXTPPaintManager:SetTheme(xtpThemeOffice2003);編譯運(yùn)行,出現(xiàn)Offiice 2003主題風(fēng)格的應(yīng)用程序 資源包含,查看rc2資源文件代碼,添加xttoolkitpro.rc,在資源附加目錄中添加xttoolkitpro.rc所在目錄使用的時(shí)候,只需要在StdAfx.h中加入下面的語句即可#include 如果你選擇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_TASKPANEL#define _XTP_EXCLUDE_SHORTCUTBAR#define _XTP_EXCLUDE_SKINFRAMEWORK#define _XTP_EXCLUDE_RIBBON#define _XTP_EXCLUDE_SYNTAXEDIT另外值得注意的一點(diǎn)是,如果你選擇static link,那么需要將XTP的資源導(dǎo)入你的工程之中。比如要使用中文資源,那么把下面的代碼加入工程的rc2文件的最后#define _XTP_RESOURCE_LANGUAGE zh_CN#include 同時(shí),你還需要修改一下XTP附帶的XTToolkitPro.rc中的內(nèi)容將最后的LANGUAGE_DEFAULT(TaskPanel)改成LANGUAGE_LOCALIZED(TaskPanel)然后在TaskPanelres目錄下將Resource.rc復(fù)制成Resource_zh_CN.rc,并將其中的編碼改成中文#if !defined(AFX_RESOURCE_DLL) | defined(AFX_TARG_CHS)#ifdef _WIN32LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED#pragma code_page(936)#endif /_WIN32#endif否則你之后include的資源會(huì)變成默認(rèn)的英文認(rèn)識(shí)XtremeToolkitPro的文件夾結(jié)構(gòu)及文件用途XtremeToolkitPro安裝后,其文件夾結(jié)構(gòu)如下圖所示: 前面的幾個(gè)文件夾就不用我說了,重點(diǎn)說說Utils里面的文件夾。AppWizard:很顯然是XtremeToolkitPro應(yīng)用程序工程生成向?qū)У奈募A,這一點(diǎn)后面再作詳解。Package:此文件夾里有一個(gè)動(dòng)態(tài)庫文件CodejockPackage.dll和一個(gè)1033的文件夾,文件夾1033及其下的CodejockPackageUI.dll應(yīng)該是與UI有關(guān)的E文資源包。而DLL文件是被注冊(cè)在注冊(cè)表中VisualStudio8.0Packages項(xiàng)下的,應(yīng)該是用作本地化的,具體用途是為Visual Studio提供本地化資源,還是作別的什么用途就不是很清楚了,因?yàn)楣P者對(duì)本地化不是很了解,望有這方面經(jīng)驗(yàn)的達(dá)人指點(diǎn)指點(diǎn),呵呵。Translations:文件夾是為ToolkitPro提供的多語言資源庫。方便大家開發(fā)多語言版本的軟件項(xiàng)目。另外Utils文件夾下還有兩個(gè).exe文件,CommandBarsDesigner.exe和ResourceEditor.exe,前者就不用我說了,是開發(fā)界面風(fēng)格的工具,help中有它的使用說明手冊(cè)。后者呢,是開發(fā)多語言版的資源編輯工具,不但可以用來編輯修改Translations文件夾下的資源動(dòng)態(tài)庫文件(.DLL),生成新的語種資源動(dòng)態(tài)庫,還可以提取.exe中的資源(String Table、Menu和Dialogs中的字符串)生成.xml文件,然后Export to DLL,生成新的資源動(dòng)態(tài)庫。然后是Workspace文件夾,在此之下的Resource文件夾是XtremeToolkitPro 支持的各國語言資源文件夾,其下又包括多個(gè)以ResourceXXX命名的文件夾,且每個(gè)文件夾下均包括Resource.rc、ResourceXXX_vc80.sln和ResourceXXX_vc80.vcproj三個(gè)文件(XXX代表語言名稱)。打開.sln文件,整個(gè)解決方案里就只包括Resource.rc,由此可看出該工程僅僅是用來編譯資源文件的。而Resource文件夾下有.mak文件(Resource.mak)、項(xiàng)目文件(Resource_vc80.sln)、資源包的定義文件ResourcePackage.h、ResourcePackage.rc。由此可看出是為批量編譯資源文件用的。Samples文件夾下全是各個(gè)Sample的.sln文件。ToolkitPro文件夾下面是編譯XtremeToolkitPro各種版本動(dòng)態(tài)庫用的項(xiàng)目文件。如果你修改了ToolkitPro的原文件(如果你是這種牛人:-),你可以打開ToolkitPro_vc80.sln再次編譯ToolkitPro界面庫便可生成Unicode版本的動(dòng)態(tài)庫,或非Unicode動(dòng)態(tài)庫。總結(jié),由上述可以看到,XtremeToolkitPro不但為開發(fā)者提供了漂亮的界面庫,而且為開發(fā)者開發(fā)多國語言的程序提供現(xiàn)成的界面相關(guān)語言資源庫。順便告訴大家,ToolkitPro還提供了類CXTPResourceManager,處理資源問題應(yīng)該很方便哦,呵呵。使用方法在help里能找到。筆者之前通過ToolkitPro向?qū)身?xiàng)目,結(jié)果界面部分卻總是E文的,所以總感覺很不爽。至此,想要ToolkitPro顯示中文,不再是難事了。哈哈!讓你的應(yīng)用程序界面-ToolkitPro顯示中文打開ToolkitPro_vc80.sln項(xiàng)目,然后查看ToolkitPro.rc源代碼,拉到文件最后,會(huì)發(fā)現(xiàn)如下的定義:1#if!defined(AFX_RESOURCE_DLL)|defined(AFX_TARG_ENU)23#ifdef_WIN3245LANGUAGE9,167#pragmacode_page(1252)89#endif/_WIN321011#includeXTToolkitPro.rc/non-MicrosoftVisualC+editedresources1213#includeafxres.rc/Standardcomponents1415#endif1617代碼中定義包含的文件XTToolkitPro.rc 是在ToolkitPro的Source文件夾下的,XTToolkitPro.rc 文件集中定義的是界面庫中各種控件的資源文件,咱們?cè)俅蜷_XTToolkitPro.rc文件,我們發(fā)現(xiàn)文件開頭幾行定義說明了一切問題。12#defineLANGUAGE_DEFAULT(ProdName)34#ifdef_XTP_RESOURCE_LANGUAGE56#defineLANGUAGE_LOCALIZED_(ProdName,LangName)78#defineLANGUAGE_LOCALIZED_(ProdName,LangName)LANGUAGE_LOCALIZED_(ProdName,LangName)910#defineLANGUAGE_LOCALIZED(ProdName)LANGUAGE_LOCALIZED_(ProdName,_XTP_RESOURCE_LANGUAGE)1112#else1314#defineLANGUAGE_LOCALIZED(ProdName)LANGUAGE_DEFAULT(ProdName)1516#endif171819#if!defined(_XTP_EXCLUDE_CALENDAR)2021#includeLANGUAGE_LOCALIZED(Calendar)/_XTP_INCLUDE_CALENDAR2223#endif242526#if!defined(_XTP_EXCLUDE_COMMANDBARS)2728#includeLANGUAGE_LOCALIZED(CommandBars)/_XTP_INCLUDE_COMMANDBARS2930#endif31/.32333435第一行定義了缺省的語言,第二行的標(biāo)識(shí)_XTP_RESOURCE_LANGUAGE可以看出該標(biāo)識(shí)是為使用不同的語言資料文件而定義標(biāo)識(shí)的。那么只要在程序庫中定義了該標(biāo)識(shí)就可以讓ToolkitPro使用相應(yīng)的語言資源庫了。HoHo! 打開Source文件夾,在每一個(gè)控件包含的文件夾下都可以看到許多后綴為.rc的資源文件,由資源文件的名稱,再由定義語句:#defineLANGUAGE_LOCALIZED_(ProdName,LangName)可以很容易猜得到中文的定義為zh_CN,自然可以猜到定義中文資源的語句即為:#define_XTP_RESOURCE_LANGUAGEzh_CN那么應(yīng)該定義在哪。我的做法是定義在ToolkitPro.rc文件的頭幾行,因?yàn)樵撐募蔷幾g界面庫的項(xiàng)目文件中的文件,與ToolkitPro的源代碼沒有關(guān)系,因此盡可能不影響源代碼為佳。接下來再找到下面一行:LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US改為LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED再次重新生成一下各種版本的動(dòng)態(tài)庫(編譯你需要的版本就夠了,全編譯很費(fèi)時(shí)的?。篋),然后再運(yùn)行你的應(yīng)用程序,Bingo!界面元素的窗口、工具條等等,比如工具條自定義窗口都變成中文了。Ps: 我想說說ToolkitPro.rc文件中的#if!defined(AFX_RESOURCE_DLL)|defined(AFX_TARG_ENU)#endif標(biāo)識(shí)AFX_RESOURCE_DLL我猜想應(yīng)該是為制作多國語言資源所用。因?yàn)槎x了它,其后的資源文件就不會(huì)被定義了。也就是不會(huì)把資源編譯進(jìn)ToolkitPro的DLL中。若哪位達(dá)人做過多語言版本方面的軟件研究,還望不吝賜教。XTP界面在Dialog里的實(shí)現(xiàn) 1,確定你已經(jīng)裝好了XTP。2,修改目錄:工具/選項(xiàng)/目錄 include files : D:Microsoft Visual StudioXtreme ToolkitPro v11.2.2Source librarys files : D:Microsoft Visual StudioXtreme ToolkitPro v11.2.2Libvc603,工程/設(shè)置/C+ 在工程選項(xiàng)里面添加:/Zm200 注意大小寫。4,在stdAfx.h里面添加:#include 5, 在Dialog.h文件中,Dialog定義的地方改為:#define CDialogSampleDlgBase CXTPDialogBaseclass CCardManageDlg : public CDialogSampleDlgBasepublic:。6,在Dialog構(gòu)造函數(shù)實(shí)現(xiàn)的地方改為:CCardManageDlg:CCardManageDlg(CWnd* pParent /*=NULL*/): CDialogSampleDlgBase(CCardManageDlg:IDD, pParent)。7,dialog構(gòu)造函數(shù)實(shí)現(xiàn)內(nèi),預(yù)先配置:XTPSkinManager()-SetApplyOptions(XTPSkinManager()-GetApplyOptions() | xtpSkinApplyMetrics);/這句必須有,XTPSkinManager()-LoadSkin(_T(Office2007.cjstyles);/這句是設(shè)置一種風(fēng)格,Office2007.cjstyles是風(fēng)格文件名,要拷貝過來。8,增加變量:BOOL m_bInRepositionControls, m_bInitDone;CRect m_rcBorders;用于第9,10步中,重新設(shè)置組件位置和大小。9,在initdialog里面添加:VERIFY(InitCommandBars();/XTP帶,預(yù)處理,不可少。CXTPCommandBars* pCommandBars = GetCommandBars();/CXTPCommandBars管理TOOLBAR,Menu和status./*開始添加菜單*/pCommandBars-SetMenu(_T(Menu Bar), IDR_MENU1); CXTPToolBar* pToolBar = pCommandBars-Add(_T(Standard), xtpBarTop); pToolBar-LoadToolBar(IDR_MAINFRAME);XTPImageManager()-SetIcons(IDR_MAINFRAME);/圖標(biāo)pCommandBars-GetCommandBarsOptions()-ShowKeyboardCues(xtpKeyboardCuesShowWindowsDefault);/額外的。pCommandBars-GetToolTipContext()-SetStyle(xtpToolTipOffice);/額外的。/ pCommandBars-GetShortcutManager()-SetAccelerators(IDR_ACCELERATOR);/快捷鍵LoadCommandBars(_T(CommandBars);/XTP必須/*下面是為解決MENU和TOOLBAR引起的錯(cuò)位,通過迭代對(duì)所有子組件重拍*/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();/重設(shè)組件位置和大小,實(shí)現(xiàn)見10.m_szMin = m_szWindow;AutoLoadPlacement(_T(Placement);10,實(shí)現(xiàn)RepositionControls();/重設(shè)組件位置和大小,無需看,直接復(fù)制。void CCardManageDlg:RepositionControls()if (m_bInRepositionControls | !m_bInitDone) return;CRect rcClientStart;CRect rcClientNow;GetClientRect(rcClientStart);if (GetStyle() & WS_MINIMIZE) | (rcClientStart.IsRectEmpty() return;m_bInRepositionControls = TRUE;RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0, reposQuery, rcClientNow);CRect rcBorders(rcClientNow.left - rcClientStart.left, rcClientNow.top - rcClientStart.top, rcClientStart.right - rcClientNow.right, rcClientStart.bottom - rcClientNow.bottom);if (rcBorders != m_rcBorders) CPoint ptOffset(rcBorders.left - m_rcBorders.left, rcBorders.top - m_rcBorders.top); CSize szOffset(rcBorders.left + rcBorders.right - m_rcBorders.left - m_rcBorders.right, rcBorders.top + rcBorders.bottom - m_rcBorders.top - m_rcBorders.bottom); CRect rcWindow; 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,添加狀態(tài)欄的方法:狀態(tài)欄變量:CXTPStatusBar m_wndStatusBar;在ONinitdialog里面加:if (!m_wndStatusBar.Create(this) | !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT) TRACE0(Failed to create status barn); return -1; / fail to createm_wndStatusBar.SetPaneInfo(0, ID_SEPARATOR, SBPS_STRETCH, 100);在合適的地方調(diào)用m_wndStatusBar.SetWindowText(lpsz);即可設(shè)置顯示文本/*下面這句有時(shí)間看看*/LRESULT CDialogSampleDlg:OnKickIdle(WPARAM, LPARAM)if (GetCommandBars() GetCommandBars()-UpdateCommandBars();if (m_wndStatusBar.GetSafeHwnd() m_wndStatusBar.SendMessage(WM_IDLEUPDATECMDUI, TRUE);return 0;3 添加智能菜單1添加Id數(shù)組,看起來這一步對(duì)用戶不太重要。static UINT uHideCmds =ID_FILE_PRINT, ID_FILE_PRINT_PREVIEW, ID_WINDOW_CASCADE;2在CMainFrame:OnCreate中添加智能菜單的初始化。/ Hide array of commandspCommandBars-HideCommands(uHideCmds, _countof(uHideCmds);/ Set Always Show Full Menus option to the FALSEXTP_COMMANDBARS_OPTIONS* pOptions = pCommandBars-GetCommandBarsOptions();pOptions-bAlwaysShowFullMenus = FALSE;3為CMainFrame的OnCreate函數(shù)添加LoadCommandBars(_T(“CommandBars”),這將恢復(fù)先前工具欄和菜單及一些所作的定制。int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)./ Load the previous state for toolbars and menus.LoadCommandBars(_T(CommandBars);return 0;4為CMainFrame添加OnClose消息的處理,添加SaveCommandBars(_T(“CommandBars”);在調(diào)用基類之前,這將存儲(chǔ)先前用戶使用過的命令。void CMainFrame:OnClose()/ Save the current state for toolbars and menus.SaveCommandBars(_T(CommandBars);CMDIFrameWnd:OnClose();4 自定義主題為應(yīng)用程序添加一個(gè)定制的theme1創(chuàng)建一個(gè)從toolkit中預(yù)定義的theme中派生的新類。我們使用CXTPDefaultTheme,你可以使用以下任何一個(gè)theme類:- CXTPDefaultTheme 得到 Office 2000 theme- CXTPOfficeTheme得到Office XP theme- CXTPOffice2003Theme得到Office 2003 theme- CXTPNativeXPTheme得到Native XP themeclass CDoubleGripperTheme : public CXTPDefaultTheme;2重載CXTPDefaultTheme基類的DrawCommandBarGripper。這將允許添加我們自己定制的外觀,畫命令欄的把手(gripper)。class CDoubleGripperTheme : public CXTPDefaultThemevirtual CSize DrawCommandBarGripper(CDC* pDC, CXTPCommandBar* pBar, BOOL bDraw);/ DrawCommandBarGripper function./ if bDraw if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TS 16551:2025 EN Health informatics - Reference model for virtual reality (VR)-based clinical practice simulation
- GB/T 12789.1-2025核反應(yīng)堆儀表準(zhǔn)則第1部分:一般原則
- 材料力學(xué)與智能材料重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 高考數(shù)學(xué)應(yīng)試技巧試題及答案輔導(dǎo)
- 信息處理技術(shù)員考前指導(dǎo)試題及答案
- 斗輪機(jī)火災(zāi)應(yīng)急預(yù)案(3篇)
- 行政法與民主體制的關(guān)系試題及答案
- 護(hù)士火災(zāi)應(yīng)急預(yù)案問題分析(3篇)
- 高考作文撬動(dòng)未來的試題與答案
- 網(wǎng)絡(luò)協(xié)議與實(shí)現(xiàn)試題及答案
- 某中型轎車電動(dòng)助力轉(zhuǎn)向系統(tǒng)設(shè)計(jì)
- 2025年山東產(chǎn)權(quán)交易集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 十歲生日宴流程
- DB3307T 128-2023 共富工坊建設(shè)與星級(jí)評(píng)價(jià)規(guī)范
- 《推進(jìn)鄉(xiāng)村振興中的的政府行為研究國內(nèi)外文獻(xiàn)綜述》5100字
- 公司師徒制、導(dǎo)師制管理辦法(完整版方案)
- 解剖學(xué)公開課課件內(nèi)分泌
- 家族財(cái)富管理
- 高中必修一英語單詞湘教版
- 森林防火預(yù)警監(jiān)測
- 銀屑病臨床病例討論
評(píng)論
0/150
提交評(píng)論