本文主要是介绍WTL的几个问题的解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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程序。
这篇关于WTL的几个问题的解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!