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程式。