请教怎么实现MFC Dlg界面多语言界面,急等。。。。

shen_wei CSDN大学 软件工程师  2011-03-28 12:01:55
对话框程序,怎么实现多语言界面的切换。。。

对话框上包含,Menu,Button,List,tooltip ,还有button 打开CFileDialog等等。。

1|网上介绍的多语言切换。。在rc文件中可以实现 menu的快速切换,,但是实现不了界面的完全切换。。

这中就是建立连个语言菜单来切换

2 纯资源dll文件。。这个只能在加载时实现资源的切换,不能实现在界面中通过菜单切换。。。


请问大家要实现界面的全部语言切换,应该使用那种方法来解决??全界面的语言切换。。。

在线急等。。。谢谢!!
...全文
281 30 点赞 打赏 收藏 举报
写回复
30 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
na2650945 2011-05-18
请问哪种方法实现多语言可以达到程序最小化。
  • 打赏
  • 举报
回复
uieasy 2011-03-30
建议参考下,notpad++这些著名的开源项目。
  • 打赏
  • 举报
回复
hideforever 2011-03-29
写配置文件
  • 打赏
  • 举报
回复
向立天 2011-03-28
我做过一个小项目
是这么弄得
把所有的字符串都通过代码动态设置(包括按钮标题和菜单)
然后将字符串分语言整理到数组中
通过修改数组下表更新界面语言
有时需要调整一下控件大小
  • 打赏
  • 举报
回复
baihaipi 2011-03-28
基本上SetWindowText,一个个重新设置一遍。
  • 打赏
  • 举报
回复
King_hhuang 2011-03-28
http://www.vckbase.com/document/viewdoc/?id=1102
http://www.vckbase.com/document/viewdoc/?id=663
http://www.vckbase.com/document/viewdoc/?id=547

http://download.csdn.net/source/1287356
  • 打赏
  • 举报
回复
Dreadnought 2011-03-28
写到配置文件(ini)里面,点击菜单切换语言,然后重新读取对应的配置文件就可以了啊
  • 打赏
  • 举报
回复
黑泡泡选手 2011-03-28
用资源动态库,菜单选择语言切换时,需重启应用程序生效!
  • 打赏
  • 举报
回复
syq13 2011-03-28
点击菜单式加载其他语言的资源,必要时可以重绘一下窗口
  • 打赏
  • 举报
回复
走好每一步 2011-03-28
因为该代码还没真正用到市场去的,其实给自己留一份也不为过。

韩语是最麻烦的。God bless you!
  • 打赏
  • 举报
回复
走好每一步 2011-03-28
[Quote=引用 5 楼 xianglitian 的回复:]
我做过一个小项目
是这么弄得
把所有的字符串都通过代码动态设置(包括按钮标题和菜单)
然后将字符串分语言整理到数组中
通过修改数组下表更新界面语言
有时需要调整一下控件大小
[/Quote]

嗯,这个可以,我都实现过,多国语言动态切换是没问题的。
不过设置很多细节,具体我也记不起来了。
很后悔离开公司,源代码没给自己留一份。
  • 打赏
  • 举报
回复
向立天 2011-03-28
[Quote=引用 6 楼 shen_wei 的回复:]

引用 5 楼 xianglitian 的回复:
我做过一个小项目
是这么弄得
把所有的字符串都通过代码动态设置(包括按钮标题和菜单)
然后将字符串分语言整理到数组中
通过修改数组下表更新界面语言
有时需要调整一下控件大小


那要是调用其它控件哪??打开文件对话框哪??
[/Quote]
那就比较麻烦了
如果只是英文的倒还好办
如果还有其他语言恐怕你要自己重写这些控件了
  • 打赏
  • 举报
回复
shen_wei 2011-03-28
TCHAR str1[MAX_PATH];
TCHAR str2[MAX_PATH];
TCHAR str3[MAX_PATH];
LoadString(hDll,IDS_STRING10003,str1,MAX_PATH);
LoadString(hDll,IDS_STRING10004,str2,MAX_PATH);
LoadString(hDll,IDS_STRING10005,str3,MAX_PATH);

SetDlgItemText(IDOK,str1);
SetDlgItemText(IDCANCEL,str2);
SetDlgItemText(IDC_BTN_TEST,str3);

FreeLibrary(hDll);
hDll = NULL;
[Quote=引用 22 楼 arpnet99 的回复:]
上面的例子是
用dll 中的string table实现。
电驴等软件都是这样实现的
[/Quote]

每一个界面都要这样使用吗??如过很多这样是不是很麻烦??
  • 打赏
  • 举报
回复
这不是鸭头 2011-03-28
上面的例子是
用dll 中的string table实现。
电驴等软件都是这样实现的
  • 打赏
  • 举报
回复
这不是鸭头 2011-03-28
http://download.csdn.net/source/3125767
  • 打赏
  • 举报
回复
shen_wei 2011-03-28
[Quote=引用 19 楼 hpf976149 的回复:]
多语言,我只用过两种方式,都是XP,VC6
1 资源DLL,需要重启程序,操作简单,代码改动少
2 语言配置文件,不需要重启程序,这个比较麻烦,点菜单时更新所有已经显示控件,未创建显示的根据当前选择语言创建(如:文件保存对话框,class CMyFileDlg : public CFileDialog,在CMyFileDlg中设置所有文字,包括TOOLTIP)
[/Quote]

2 语言配置文件 你指的是通过INI文件来实现的吗???
  • 打赏
  • 举报
回复
CppCoder 2011-03-28
多语言,我只用过两种方式,都是XP,VC6
1 资源DLL,需要重启程序,操作简单,代码改动少
2 语言配置文件,不需要重启程序,这个比较麻烦,点菜单时更新所有已经显示控件,未创建显示的根据当前选择语言创建(如:文件保存对话框,class CMyFileDlg : public CFileDialog,在CMyFileDlg中设置所有文字,包括TOOLTIP)
  • 打赏
  • 举报
回复
abc3240666 2011-03-28
通过ini实现多语言
  • 打赏
  • 举报
回复
King_hhuang 2011-03-28
[Quote=引用 16 楼 shen_wei 的回复:]
引用 15 楼 king_hhuang 的回复:
引用 14 楼 shen_wei 的回复:
引用 12 楼 king_hhuang 的回复:
if (m_bChinese)
{
AfxSetResourceHandle(m_hCHLangDLL);
}
else
{
AfxSetResourceHandle(m_hENLangDLL);



不是啊,如果纯资源dll……
[/Quote]
我也没做过,只是看你的代码觉得可能可以,代码你发给我看看吧,King_hhuang@126.com,不一定帮得了你哦
  • 打赏
  • 举报
回复
shen_wei 2011-03-28
[Quote=引用 15 楼 king_hhuang 的回复:]
引用 14 楼 shen_wei 的回复:
引用 12 楼 king_hhuang 的回复:
if (m_bChinese)
{
AfxSetResourceHandle(m_hCHLangDLL);
}
else
{
AfxSetResourceHandle(m_hENLangDLL);



不是啊,如果纯资源dll话的,主工程里面是没有资源文件的。。如果不加在的话。……
[/Quote]

你有邮箱吗?我把代码给你。。你改变下看看!!看看怎么修改。。。。
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
界面
加入

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2011-03-28 12:01
社区公告
暂无公告