MFC 中英文同步
来源:互联网 发布:华为数据银行 编辑:程序博客网 时间:2024/05/29 09:34
传统的做法是把所有的资源都放到动态库中,一种语言一个动态库,程序运行的时候通过加载不同的动态库来实现多语言功能。这样做的缺点是不能动态切换语言,如果更换语言后必须重新启动软件。当然,没有人会需要经常的切换语言玩儿,但是采用动态库的方法,如果程序需要修改资源的话,就要更新所有的动态库,这是一个非常枯燥而且容易出现疏漏的工作。
我的方法是把所有用到的字符串都放到文件中,一种语言一个文件,根据选择的语言到对应的文件中去加载字符串。这样不但可以动态切换语言,而且用户可以根据需要自己添加新的语言。
具体实现:
1、程序启动时检查所选择的语言,确定该语言文件,保存该文件路径
2、提供一个全局函数,如 g_LoadString(CString szID),根据提供的字符串ID返回其内容,具体是哪个语言的在函数中判断,这样在程序中只要提供一个字符串ID就可以自动加载不同语言的文字了。
3、如何在程序中使用:
原来代码:
1.
CString str;
2.
str =
"语言"
;
改动后:
1.
CString str;
2.
str = g_LoadString(
"IDS_LANGUAGE"
);
4、对话框中如何实现
如果像在程序中使用一样,每一个字符串都要去加载一次的话,如果对话框比较多,工作量可就太大了。所以我提供了一个函数g_SetDialogStrings(CDialog *pDlg,UINT uDlgID),每个对话框在初始化的时候调 用该函数,传递对话框的指针,我在函数中循环枚举所有的子控件,逐个设置文字。这样就可以省去很多工作
注意:由于静态文本(CStatic)默认的ID是IDC_STATIC,值都是65535,无法区分,所以在需要改变其文字的CStatic的ID要改一改,不能用默认的
5、语言文件样例:
中文版:
01.
[Setting]
02.
Language=Chinese
03.
04.
[String]
05.
IDS_MENU_FILE=文件
06.
IDS_MENU_FILE_NEW=新建(&N)
07.
IDS_MENU_FILE_OPEN=打开(&O)
08.
IDS_MENU_FILE_CLOSE=关闭(&C)
09.
IDS_MENU_FILE_EXIT=退出(&E)
英文版:
01.
[Setting]
02.
Language=English
03.
04.
[String]
05.
IDS_MENU_FILE=File
06.
IDS_MENU_FILE_NEW=&New
07.
IDS_MENU_FILE_OPEN=&Open
08.
IDS_MENU_FILE_CLOSE=&Close
09.
IDS_MENU_FILE_EXIT=&Exit
- MFC 中英文同步
- [MFC]MFC同步类总结
- [MFC]MFC同步类总结
- MFC多线程同步方法
- MFC多线程同步方法
- MFC多线程同步问题
- MFC线程同步
- MFC进度条同步问题
- MFC同步类
- MFC中线程同步
- MFC多线程同步方法
- MFC 线程同步问题
- MFC中的线程同步
- MFC多线程同步方法
- MFC多线程同步方法
- MFC中线程同步
- MFC 多线程同步方法
- MFC中线程同步
- 代码系列2:Camera的简单应用
- Android Manifest.xml 结构详解
- long型的时间转换为时间格式 短信模块用到
- 带参创建线程
- 新时尚Windows8开发(32):Json数据处理(A)
- MFC 中英文同步
- 视频文件头解析--mkv
- Cannot find or open the PDB file
- 新时尚Windows8开发(33):Json数据处理(B)
- tomcat7.0使用servlet处理jsp表单(form)的web.xml配置
- css未知宽度水平居中的几种解决方案
- hibernate.jdbc.fetch_size 和 hibernate.jdbc.batch_size
- 多线程编程中需要知道的操作系统的概念
- iOS常用第三方类库