WTL的幾個問題的解決辦法

來源:互聯網
上載者:User

1、WTL嚮導的中文本地化

需要修改兩個檔案,AppWizFilesTemplates..root.rc,AppWizFilesScripts..default.js。當然,願意全盤漢化的也可以修改AppWizFilesHTML裡面的HTML頁面。

注意到這些目錄裡都有一個1033的子目錄,這就是語言地區為USEnglish對應的檔案,我們要做的是複製一份,改名為2052,然後修改裡面的上邊提到的檔案。

root.rc修改方法

首先去掉強制語言地區

/////////////////////////////////////////////////////////////////////////////

// English (U.S.) resources

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

#ifdef _WIN32

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#pragma code_page(1252)

#endif //_WIN32

修改對話方塊模板,除了改字型,也可以按自己喜好改別的

/////////////////////////////////////////////////////////////////////////////

//

// Dialog

//

IDD_ABOUTBOX DIALOG  0, 0, 187, 102

STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU

CAPTION 'About'

FONT 8, 'MS Sans Serif'//改成8,'MS Shell Dlg'

BEGIN

    DEFPUSHBUTTON   'OK',IDOK,130,81,50,14

    CTEXT           '[!output PROJECT_NAME] Application v1.0nn(c) Copyright [!output WTL_CURRENT_YEAR]',IDC_STATIC,25,57,78,

                    32

    ICON            IDR_MAINFRAME,IDC_STATIC,55,26,18,20

    GROUPBOX        '',IDC_STATIC,7,7,115,88

END

[!if WTL_APPTYPE_DLG]

IDD_MAINDLG DIALOG  0, 0, 187, 98

STYLE WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU

CAPTION '[!output PROJECT_NAME]'

FONT 8, 'MS Sans Serif'//同上

BEGIN

    DEFPUSHBUTTON   'OK',IDOK,130,7,50,14

    PUSHBUTTON      'Cancel',IDCANCEL,130,24,50,14

    PUSHBUTTON      '&About...',ID_APP_ABOUT,130,77,50,14

END

[!endif]

[!if WTL_VIEWTYPE_FORM]

IDD_[!output UPPERCASE_SAFE_PROJECT_NAME]_FORM DIALOGEX 0, 0, 185, 93

STYLE WS_CHILD | WS_VISIBLE

EXSTYLE WS_EX_CLIENTEDGE

FONT 8, 'MS Sans Serif'//同上

BEGIN

 LTEXT 'TODO: Place form controls on this dialog.',IDC_STATIC,24,42,

  136,8

END

[!endif]

 

漢化字串資源,比較多,可以參考MFC的嚮導改Microsoft Visual Studio 8VCVCWizardsAppWizMFCApplicationtemplates2052all.rc

default.js修改方法

這個檔案是產生解決方案檔案的指令碼,把RCTool.Culture = rcEnglishUS;改成RCTool.Culture = wizard.FindSymbol('LCID');

考慮到第一個檔案修改工作量很大,可以發電子郵件索要修改好的前一個檔案。

===========================================================

2、WTL中CString的使用問題

如果你按照說明定義_WTL_USE_CSTRING,然後包含atlmsic.h,就會出現CString定義不明的編譯錯誤,其實就是編譯器分不清你是用WTL::CString,還是ATL::CString。其實你跟本用不著用WTL::CString,它們根本上就是一樣的。

避免這類錯誤的方法就是在atlapp.h前麵包含atlstr.h,這個檔案裡面定義的__ATLSTR_H__和_WTL_USE_CSTRING起的作用是一樣的,並且指定CString為ATL::CString,這樣就不用包含atlmisc.h了。atlmisc.ht提供的CSize, CPoint,CRect用WindowsAPI來代替也不見得多麻煩。

當然,你也可以把CString從atlmisc.h中移走,不過這有點侵犯別人勞動成功的嫌疑。

=============================================================

3、WTL嚮導產生的對話方塊程式中文亂碼的解決

首先,選工程屬性,把資源的屬性改成“中文(中國)”,是不是一定要改,我不確定。

最重要的是,把對話方塊的字型換成中文字型,比如宋體。

並不需要改成Unicode程式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.