多语言的实现

多语言的实现不是个新鲜的话题,简单的做一下整理。实现多语言的方式有通常下面几种:
1,资源文件,动态实现多语言,需要重新启动程序
2,从文件加载语言,完全动态实现多语言,不需要重新启动程序
3,编译时用不同的头文件包含不同的语言,实现编译级别上的多语言,每一次编译都能生成一种语言的可执行文件

下面介绍下用资源文件实现多语言的一些需要注意的地方
1,如何开始?
  1,新建一个工程NewProject,正常编码和编译(假如它的资源文件为NewProject.rc resource.h)
  2,将资源文件独立出来成为纯资源dll,需要进行如下的步骤
    a,NewProject的ResourceView中,选取一个对话框资源,右键选择Insert Copy...,在弹出的对话框中,选择一种你需要的语言(这里选择English(U.S)),经过这一步后,多语言的资源文件已经有了,只是没有把它分离出来了
    b,将资源文件独立为纯资源dll
      i,新建一个Win32 DLL工程NewProjectResEng,添加NewProject.rc和resource.h到NewProjectResEng
      ii,更改NewProjectResEng的编译选项
         a,在Project/setting/Resources/Preprocessor definitions:中增加AFX_RESOURCE_DLL,AFX_TARG_ENU
         b,在Project/setting/link/Project Options:中增加/noentry
  经过以上的步骤,已经产生了纯资源dll,下面需要动态加载资源
  3,程序中动态加载资源文件
    一,可用LoadLibrary来将资源文件加载到内存,二,用AfxSetResourceHandle来设置资源文件
  经过以上步骤,就能动态加载资源文件,就能实现多语言了。

2,与实现多语言中一些相关知识
  2.1,在mfc的扩展dll中是不能实现动态加载资源dll的,如果加载会出现ASSERT,在扩展dll中能够加载activex控件
  2.2,可以在mfc的常规dll中动态加载资源dll,但需要注意的是,在某个导出函数前要添加AFX_MANAGE_STATE(AfxGetStaticModuleState());
  3.3,如果需要动态加载activex和资源dll应该怎么办?
       暂时还不知道怎么解决,如果不行,就只有换个方式来实现多语言,如上面所叙的方法2,方法3应该都可以

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值