实现程序在编译时实现多语言文档格式.docx
《实现程序在编译时实现多语言文档格式.docx》由会员分享,可在线阅读,更多相关《实现程序在编译时实现多语言文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
3.在资源视图中,插入对话框的一个副本,
选择对应的语言,
4.将新插入的副本界面调整为英语
5.下面这一步就是关键点,我们先分析一下原理
用记事本打开项目文件是的资源脚本文件,*.rc
这一段定义了简体中文的资源
这一段定义了美国英文的资源
由上面的代码可以看出,编译器通过AFX_RESOURCE_DLL,AFX_TARG_CHS,AFX_TARG_ENU这几个宏来决定编译的资源定义
这样,我们就可以在编译配置选项中来预定义这些宏,指定编译的语言类型
如此以来,我们在编译的时候,选择Release_CHS或者Release_ENU,就可以生成不同语言的可执行文件了。
另外,如果需要在程序中动态读取文本,如提示信息,可以建立不同语言的StringTable,然后从StringTable中读取,编译器根据不同的编译选项,会自动读取相应语言的StringTable
CStringstrRes;
strRes.LoadString(IDS_XXX);
MessageBox(strRes);
此外如果要真正使程序能过运行,需要对所有的资源都添加对应的语言资源。
每一项都要添加。
最后要修改rc文件。
在资源视图上的rc文件上点击右键,选择ViewCode
编辑rc文件
编辑以下这一段
3TEXTINCLUDE
BEGIN
"
#define_AFX_NO_OLE_RESOURCES\r\n"
#define_AFX_NO_TRACKER_RESOURCES\r\n"
#define_AFX_NO_PROPERTY_RESOURCES\r\n"
\r\n"
#if!
defined(AFX_RESOURCE_DLL)||defined(AFX_TARG_CHS)\r\n"
LANGUAGE4,2\r\n"
#include"
"
res\\WorkBench2M.rc2"
//非MicrosoftVisualC++编辑的资源\r\n"
l.CHS\\afxres.rc"
//标准组件\r\n"
l.CHS\\afxprint.rc"
//打印/打印预览资源\r\n"
defined(_AFXDLL)\r\n"
l.CHS\\afxribbon.rc"
//MFC功能区和控件条资源\r\n"
#endif\r\n"
\0"
END
为
defined(AFX_RESOURCE_DLL)||defined(AFX_TARG_ENU)\r\n"
afxres.rc"
afxprint.rc"
afxribbon.rc"
然后编译运行,即可。
补充,如果在资源中不写入AFX_RESOURCE_DLL,AFX_TARG_CHS,AFX_TARG_ENU的话,程序将会变大,但是也将自动适应操作系统的语言