用VC++实现软件的多语种支持 作者:卞远 发布时间:2001/04/25 文章摘要: 本文介绍了如何编制自己的双语或多语种软件。首先,创建一个包含所有英文资源的DLL,在使用这个资源DLL时,应用程序就会以英文形式出现,即软件为英文版;然后,创建中文DLL,再次运行StateDemo程序,程序就以中文形式出现(即使应用程序未被重新编译)。 关键词 VC++,应用程序,英文资源,中文资源 正文: 用VC++实现软件的多语种支持 前言 只用一套源代码就可以方便地支持多种文字和多个地域,那么这个软件就可以方便地被翻译成本地版本,这个过程叫做地域化(Localization)。怎样才能不修改任何源代码就使之能动态地转换到不同的地域资源上呢?那就是使用Windows的程序特性之一--资源。把在软件中用到的可见资源维系在一个资源DLL(Dynamic Link Library动态链接库)中,就能使地域化很容易地被实现,因为它把具体的文字组件单独提取放在一个文件中,所以,一个可执行文件就可以装载几种不同的语言文字,并且选择用子程序来装载适合的文字DLL。创建一个CString对象的实例,并用该字串的资源标识符(string ID)调用LoadString,即可避免繁琐的字串编码工作。 在大多数情况下,资源包含在应用程序的单元中,如果调用AfxSetResource Handle,就可以指向另一个不同的单元,我下面给出的StateDemo程序就是这样处理的。调用AfxSetResource Handle,从DLL资源中采集软件所需资源,通过替换掉不同语种的DLL资源,程序便可以使用一套完全不同的资源(如String字串、Dialogue对话框、Bmp位图、Menu菜单等)。 初始情况下,作为主执行体的StateDemo不含任何资源。首先,创建一个包含所有英文资源的DLL,在使用这个资源DLL时,应用程序就会以英文形式出现,即软件为英文版;然后