BCGControlBar支援多語言資源建立應用程式嚮導的製作

來源:互聯網
上載者:User

BCGControlBar   Pro是優秀的MFC的一個擴充類庫,可以用來構建類似於Microsoft   Office、Microsoft   Visual   Studio和其他一些知名產品的進階使用者介面。可是建立應用程式的嚮導僅提供支援英語語言的資源,不能產生中文資源菜單的應用程式。好在安裝BCGControlBar   Pro   7.31後有製作建立應用程式嚮導的工程檔案,可以以此為基礎製作支援中文語言、英語語言資源的建立工程嚮導。經過兩天的摸索,已解決了製作建立工程嚮導中的問題,將整個製作嚮導的過程作一完整的敘述,以能完整的再現解決問題的過程。

  一、BCGControlBar   Pro   7.31支援中文資源建立應用程式嚮導製作的已有資料及存在問題

  網上有BCGControlBar7.3.1中文嚮導製作文章,該文的方法如下:

  1、將SetSupportedLanguages(_T(English[UnitedStates](APPWZENU.DLL);

  0x40904b0/nDeutsch[Deutschland](APPWZDEU.DLL);0x40704b0 "))語句修改為SetSupportedLanguages(_T( "中文   [中國](APPWZEDU.DLL);0x80404b0 "));

  2、漢化資源檔及其它資源。在工程BCGPAppWizard的Template檔案夾下,找到DlgLoc_enu.rc和Loc_enu.rc檔案檔案,用文字編輯器將其開啟,將其中的英文字元改為相應的中文,編輯完畢後儲存即可,將在其他檔案(如Root.cpp等)中出現的英文文本顯示的字元翻譯成中文。

  3、消除庫的開發人員在應用嚮導自訂的第一頁中添加了一個“無用”控制項,其ID為IDC_MDI_TAB_GROUPS,與之相關的變數名為BOOL   m_bMDITabGroups。工程中與IDC_MDI_TAB_GROUPS及m_bMDITabGroups相關的行注釋掉(文中對OnMdiTabs()中的IDC_MDI_TAB_GROUPS更改為IDC_MDI_TAB)。

  採用該文的方法確實可以製作支援中文資源的工程建立嚮導,但沒有資源語言的選擇餘地,同時,在SetSupportedLanguages中使用APPWZEDU.DLL,而非使用APPWZCHS.DLL,僅把轉換標識符改為中文的0x80404b0,其實只要按該文進行第2、3步就可以了,原因是第2步已對使用的所有資源檔進行了漢化。該作者這樣處理後,將失掉原有的一些功能,原因是作者認為開發人員在應用嚮導自訂的第一頁對話方塊中添加了一個“無用”控制項,其ID為IDC_MDI_TAB_GROUPS。其實,不是多了一個“無用”控制項,而正是缺失了一個與IDC_MDI_TAB_GROUPS相關聯的選擇框控制項,嚮導使用與該選擇框控制項相關聯的m_bMDITabGroups成員變數來控制MDI文檔TAB標籤是否分組。

  二、製作BCGControlBar   Pro   7.31支援多語言資源建立工程嚮導的方法及解決問題的過程

  有沒有製作既支援英語又支援中文資源的BCGControlBar   Pro   7.31建立工程嚮導的可能?經曆了以下過程,最終解決了問題。

  首先是在嚮導自訂的第一頁對話方塊中添加一個“Check   Box”的控制項,選擇標識符為IDC_MDI_TAB_GROUPS。否則在用嚮導建立工程進入嚮導自訂的第一頁對話方塊時將會彈出“試圖執行系統不支援的操作”錯誤對話方塊,建立工程嚮導不能向下進行。

  (一)、僅在語言支援中增加中文語言支援,而不漢化BCGPAppWizard的Template檔案夾下下的任何資源檔。

  1、安裝BCGControlBarPro後的目錄下有嚮導工程BCGPAppWizard,用VC開啟BCGCBProAppWizard.dsw,瀏覽BCGBAppWizardaw.cpp檔案,在InitCustomAppWiz()函數找到SetSupportedLanguages(_T( "English   [United   States]   (APPWZENU.DLL);0x40904b0 ")),把該語句修改為 SetSupportedLanguages(_T( "中文[中國]   (APPWZCHS.DLL);0x80404b0\n英語[美國]  
(APPWZENU.DLL);0x40904b0 "));,重新編譯形成建立工程嚮導的awx檔案。

  2、用該建立工程嚮導建立一新工程,選用中文語言。編譯後執行,debug版會彈出一錯誤對話方塊,選擇“忽略”,程式可繼續執行,程式菜單已為中文,但為MFC標準資源菜單,無BCGControlBar   Pro   7.31擴充菜單,同時,按“關於”菜單會彈出“試圖執行系統不支援的操作”錯誤對話方塊。對於Release版唯一不同是開始不會出現錯誤對話方塊,其餘與debug相同。

  3、用該建立工程嚮導再建立一新工程,選用英文語言。編譯後執行,一切正常,具有英文菜單,並有BCGControlBar   Pro   7.31擴充菜單。

  (二)、自己用“custom   AppWizad”建立一定製嚮導工程。在選擇支援語言時,選擇所有語言。

  用文字編輯器開啟該工程目錄下的資源檔(.rc,),在TEMPLATE節,對應每一語言均有以下檔案組:

  LOC_xxx.RC   TEMPLATE   DISCARDABLE    "template\\loc_xxx.rc "

  DLGLOC_xxx.RC   TEMPLATE   DISCARDABLE    "template\\dlgloc_xxx.rc "

  DOC_xxx.ICO   TEMPLATE   DISCARDABLE    "template\\doc_xxx.ico "

  

  ROOT_xxx.CNT   TEMPLATE   DISCARDABLE    "template\\root_xxx.cnt "

  ROOT_xxx.HPJ   TEMPLATE   DISCARDABLE    "template\\root_xxx.hpj "

  AFXDLG_xxx.RTF   TEMPLATE   DISCARDABLE    "template\\afxdlg_xxx.rtf "

  AFXCORE_xxx.RTF   TEMPLATE   DISCARDABLE    "template\\afxcore_xxx.rtf "

  AFXPRINT_xxx.RTF   TEMPLATE   DISCARDABLE    "template\\afxprint_xxx.rtf "

  AFXOLECL_xxx.RTF   TEMPLATE   DISCARDABLE    "template\\afxolecl_xxx.rtf "

  AFXOLESV_xxx.RTF   TEMPLATE   DISCARDABLE    "template\\afxolesv_xxx.rtf "

  AFXDB_xxx.RTF   TEMPLATE   DISCARDABLE    "template\\afxdb_xxx.rtf "

  

  SCMENU_xxx.BMP   TEMPLATE   DISCARDABLE    "template\\scmenu_xxx.bmp "

  APPEXIT_xxx.BMP   TEMPLATE   DISCARDABLE    "template\\appexit_xxx.bmp "

  HLPSBAR_xxx.BMP   TEMPLATE   DISCARDABLE    "template\\hlpsbar_xxx.bmp "

  XXX為語言識別項,chs-中文、enu-英語、……。

  

  並列出了在子目錄TEMPLATE中的檔案名稱,子目錄TEMPLATE下每一語言也有對應的一組檔案。

  再用文字編輯器開啟BCGPAppWizard\BCGCBProAppWizard.rc,在TEMPLATE節,只有英語語言對應的一組檔案。而該工程對應的子目錄TEMPLATE下也只有英語語言對應的一組檔案。

  經過以上過程,根據在(一)中製作的awx用來建立支援中文資源的程式會出錯,而建立英語資源的程式一切正常,可以判斷原因是與無中文資源相關的檔案組有關。至此,基本找到瞭解決的方法。

  (三)、製作BCGControlBar   Pro   7.31支援多語言資源建立工程嚮導的方法

     使用工具:檔案比較子,使用UltraCompare。

  1、經比較自己用“custom   AppWizad”建立定製嚮導工程的LOC_chs.rc、DLGLOC_chs.rc和LOC_enu.rc、DLGLOC_enu.rc,中文資源檔是英語資源檔一對一的翻譯。因此,可用自己用“custom   AppWizad”建立定製嚮導工程的LOC_chs.rc、DLGLOC_chs.rc作為BCGControlBar   Pro   7.31建立工程嚮導TEMPLATE的中文資源檔的基礎,將其複製到BCGPAppWizard\Template目錄。

  2、使用UltraCompare同時開啟3個檔案的文本比較模式,將“custom   AppWizad”建立定製嚮導工程的LOC_enu.rc作為第一開啟檔案,將BCGPAppWizard\Template目錄下的LOC_enu.rc作為第二開啟檔案,將BCGPAppWizard\Template目錄下的LOC_chs.rc作為第三開啟檔案,比較三個檔案,第二檔案有的而第一檔案無的部分資源是BCGControlBar   Pro   7.31特有的資源,將該部分特有資源插入第三個中文資源檔相應位置,至此大部分為中文的資源檔已形成,需翻譯的只是BCGControlBar  
Pro   7.31特有部分資源,對另一資源檔作相應處理(其實對於DLGLOC_chs.rc僅是增加了幾行注釋而已),所需中文資源檔已形成。

  3、用文字編輯器開啟BCGPAppWizard\BCGCBProAppWizard.rc,在TEMPLATE節增加支援中文資源的一組檔案清單,即(二)中的一組檔案。同時在BCGPAppWizard\Template目錄下增加該組中除兩個rc資源檔外的其它檔案、可採用複製BCGPAppWizard\Template目錄下對應的英語語言檔案組,將_enu改為_chs。

  4、重新編譯,經建立程式證實功能一切正常。

       把編譯產生的BCGCBProAppWizard.awx檔案拷貝到C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Template目錄下即可。

  從這一過程可看出,工程嚮導建立程式架構時,根據使用的語言在BCGCBProAppWizard.awx中尋找對應的語言識別項對應的資源,如果BCGCBProAppWizard.awx中無對應的資源,就使用MFC中相應語言的標準資源。瞭解了尋找資源的次序,再來製作支援多語言的建立工程嚮導就容易了。本文雖是針對BCGControlBar   Pro,對其它建立工程嚮導增加語言支援的製作也可採用以上4個步驟實踐。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.