通过资源dll实现动态多语言该如何做?

freefalcon 2004-06-12 02:48:29
我想通过菜单中的语言选择功能来实现中文、英文等的动态切换(国际化问题),
为此在网上查了很多资料,实现方法主要有两种:一是在程序里面使用两套资源,常见的便是菜单的多语言实现,另外一种方法便是使用纯资源dll,我目前倾向选择后者,但网上的例子都是在程序启动时就把所用的资源dll确定好了(通过AfxSetResourceHandle),稍微好一点的便是能实现菜单的动态改变,但问题是现在各种资源都有,比如对话框,显示在状态栏的字符串等

有什么好的方法能动态的改变菜单、对话框、状态栏等所用的字符串资源吗?有没有统一的简便的方法?
...全文
275 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
enoloo 2004-06-13
  • 打赏
  • 举报
回复
AfxSetResourceHandle运行中调用无效??
enoloo 2004-06-13
  • 打赏
  • 举报
回复
http://dev.csdn.net/develop/article/25/25359.shtm
changlele 2004-06-13
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=663

就是一个多语言的例子。瑞星就是这样做的,可能符合你的第一种方案
至于第二种方案InstallShield的多语言安装包就采用第二种方案
实现起来无非是程序开始的时候loadlibrary();(此时的LoadLibrary的内容应该是
你默认的DLL),程序中提供一个接口改变资源,选择不同的语言包就选择不同的Dll

这种情况都是这样做,DLL的名字相同,但是对应的路径不同,同一个资源用不同的Dll写
多次。原理和上面第一种方法相似。
freefalcon 2004-06-12
  • 打赏
  • 举报
回复
同样感谢楼上的朋友

但我的问题说得很清楚了,我需要的是在程序运行中能够对资源dll的切换,程序初始化时(InitInstance)可以通过AfxSetResourceHandle()来指定资源dll,但运行中调用该方法无效,我的问题就是怎样使运行中也有效呢?有没有其他朋友做过?
samuellei 2004-06-12
  • 打赏
  • 举报
回复
用DLL。中文资源直接放在程序中,英文资源做成DLL,在程序运行的时候,根据不同的需求进行加载。DLL实现和更改都很方便,并且这样可以实现动态改变语种。
freefalcon 2004-06-12
  • 打赏
  • 举报
回复
多谢关注

但我的问题不是dll的动态加载,而是资源的动态改变,这里的资源主要指程序所用的所有字符串资源,这些字符串可能出现在窗口标题中、菜单上、对话框中、状态栏上等,我的问题是有没有比较方便统一的方法能将它们动态的改变,即实现程序在不同语言版本间切换

路过的朋友帮忙up呀,多谢捧场 :)
longj 2004-06-12
  • 打赏
  • 举报
回复
错了,应该是
loadlibrary();
丢人阿
longj 2004-06-12
  • 打赏
  • 举报
回复
动态使用dll,也就是插件,可以实现。
祥见LoadLabrary()
Platform SDK: DLLs, Processes, and Threads

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧