对话框多国语言的支持
来源:互联网 发布:剑三成女捏脸数据截图 编辑:程序博客网 时间:2024/04/28 08:14
在实现对多国语言支持的时候,使用了一种根据选择不同语言,读取不同文件的方式,设置界面中的语言的方法。
文件的格式如下:
[Setting]
Language=0
[String]
IDD_1=AAA
IDD_2=BBB
IDD_3=CCC
其中Setting是"section name"用来区分关键字,language则是关键字,0是它的值
通过不同的值,来区分不同的语言。
主要通过以下函数实现读值得功能:nLanguage = GetPrivateProfileInt(_T("Setting"),_T("Language"),-1,szFilePath);
其中szFilePath是文件保存的路径
和界面需要的nLanguage 比较,把保存该语言的文件路径保存好,以便下一步的操作:
if(nLanguage == nID){gStrFileName = szFilePath;bFound = true;break;}
然后就可以按照下一个"section name"来取实际的字符了:
CString gLoadString(LPCTSTR szID){GetPrivateProfileString(SECTION_NAME,szID,_T("Not found"),gBufferString,BUFF_SIZE,gStrFileName);return CString(gBufferString);}其中的szID就是文件中自己定义的ID,如上面的IDD_1、IDD_2等,“=”好后面的值就是返回的gBufferString:简体、繁體、english......就随便写了
值得一提的是,设置语言后,取得的文件路径、用来读文件返回字符串的函数(gLoadString)最好是全局的,因为不方面把每个UI部分的类都创建一个多语言翻译的类
对于设置对话框和设置菜单上的字体,还有点小技巧:
保存语言的文件最好把要设置的字符串的ID按类区分,比如:
IDD_MENU_XXX —— 菜单ID
IDD_Dialog_XXX —— 对话框ID
这样做的好处是,在进行字体设置时,不用太麻烦,如:
HWND hSubWnd = GetWindow(hWnd,GW_CHILD);while(::IsWindow(hSubWnd)){szKey.Format(_T("IDD_Dialog_%d"),uDlgID,GetDlgCtrlID(hSubWnd));if(GetPrivateProfileString(SECTION_NAME,szKey,szDefault,gBufferString,BUFF_SIZE,gStrFileName) != 0){SetWindowText(hSubWnd,gBufferString);}hSubWnd = GetWindow(hSubWnd,GW_HWNDNEXT);}
又如:
CString szKey;HMENU hSubMenu = NULL;HMENU hMenu = GetMenu(hWnd);if(hMenu == NULL){return false;}UINT nMenuID;int nSubCount;int nCount = GetMenuItemCount(hMenu);for (int i=0;i<nCount;i++){GetMenuString(hMenu,i,gBufferString,BUFF_SIZE,MF_BYPOSITION);szKey.Format(_T("IDD_MAINMENU_%d"),i);WritePrivateProfileString(SECTION_NAME,szKey,gBufferString,gStrFileName);hSubMenu = GetSubMenu(hMenu,i);if(hSubMenu != NULL){nSubCount = GetMenuItemCount(hSubMenu);for (int j=0;j<nSubCount;j++){nMenuID = GetMenuItemID(hSubMenu,j);if(nMenuID == 0)continue;GetMenuString(hSubMenu,j,gBufferString,BUFF_SIZE,MF_BYPOSITION);szKey.Format(_T("IDD_MENU_%d"),nMenuID);WritePrivateProfileString(SECTION_NAME,szKey,gBufferString,gStrFileName);}}}
最后,在工程APP中,选择你所支持的语言,即设置好本文开头的nID,大功告成。
- 对话框多国语言的支持
- 多国语言支持
- 支持多国语言
- iphone 创建多国语言的支持
- iphone 创建多国语言的支持
- 移动终端的多国语言支持
- utf-8支持多国语言,GB2312支持简体中文的。
- struts多国语言支持
- WP7多国语言支持
- WINCE多国语言支持
- Android支持多国语言
- Asterisk的多国语言支持(1.4的新特性)
- EasyJWeb中灵活的多国语言支持
- EasyJWeb中灵活的多国语言支持
- EasyJWeb中灵活的多国语言支持
- EasyJWeb中灵活的多国语言支持
- EasyJWeb中灵活的多国语言支持
- EasyJWeb中灵活的多国语言支持
- linux下面各个目录的作用
- linux下配置JDK之后重启 “checking start state”
- NorFlash与NandFlash对比
- IOS视图交换实现实例
- Linux 的多线程编程的高效开发经验
- 对话框多国语言的支持
- happy 啊
- SQL SERVER 的SQL语句优化方式小结
- Android中TextView中加图片,超链接,部分字或者背景变色。。。不断补充中
- 系统调用、API之间的关系(图)
- dbus-send以及dbus-monitor工具的使用方法示例
- 决不放弃
- 入侵检测系统
- IOS类似翻页效果实现实例