在VC6中实现多语言支持
张志刚 2004年6月30日
随着计算机在各种行业的普及,以及我国软件行业的发展,国产软件在不断的走出国门,所以各种软件的多语言支持也被越来越多的程序员所关注。对于一个软件程序为了支持不同语言,而创建不同的源程序显然不是一个很好的方法。本文主要介绍如何在VC6环境下通过创建支持多语言的资源文件来实现多语言支持。
首先创建一个支持简体中文的工程项目Test,对该工程中的所有资源项使用 Insert Copy命令创建支持英文的资源项;
打开该工程的.rc文件,将该文件中的3 TEXTINCLUDE DISCARDABLE部分改写为:
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#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"
"#ifdef _WIN32\r\n"
"LANGUAGE 4, 2\r\n"
"#pragma code_page(936)\r\n"
"#endif //_WIN32\r\n"
"#include ""res\\Test.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
"#include ""l.chs\\afxres.rc"" // Standard components\r\n"
"#endif\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
"#ifdef _WIN32\r\n"
"LANGUAGE 9, 1\r\n"
"#pragma code_page(1252)\r\n"
"#endif //_WIN32\r\n"
"#include ""res\\ Test .rc2"" // non-Microsoft Visual C++ edited resources\r\n"
"#include ""afxres.rc"" // Standard components\r\n"
"#endif\r\n"
"\0"
END
将该文件末尾的Generated from the TEXTINCLUDE 3 resource.部分改写为:
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE 4, 2
#pragma code_page(936)
#endif //_WIN32
#include "res\PhTools.rc2" // non-Microsoft Visual C++ edited resources
#include "l.chs\afxres.rc" // Standard components
#endif
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif //_WIN32
#include "res\PhTools.rc2" // non-Microsoft Visual C++ edited resources
#include "afxres.rc" // Standard components
#endif
这样该工程项目的资源就可以支持中文和英文了。从Project菜单选择Setting…选项,打开Project Settings对话框,选择Resources 选项卡,在“Preprocessor definitions”追加“, AFX_TARG_ENU,AFX_RESOURCE_DLL”,对工程进行编译就可生成支持英文的程序,如果不加入“, AFX_TARG_ENU,AFX_RESOURCE_DLL”,对工程进行编译可生成支持中文的程序。