(需源码先留邮箱)先上图
1.通过遍历 得到所有控件ID号与TEXT,得到一个中文语言配置文件
void CVV_485Dlg::getCaptionForWindow() //做程序时用,其它时间不用 { //枚举对话框中所有组件 CWnd *pCtrl = GetWindow(GW_CHILD); while(pCtrl!=NULL) { UINT ctrlID = pCtrl->GetDlgCtrlID(); // setControlCaption(pCtrl,ctrlID); CString str_id,str_text; str_id.Format("%u",ctrlID); GetDlgItem(ctrlID)->GetWindowText(str_text); WritePrivateProfileString("Form", str_id, str_text,lfname); pCtrl = pCtrl->GetNextWindow(); } }
1003=转换保存并发送
1005=转换并保存
4294967295=发送
1012=待机
1013=工作
1022=接收
1004=待机
1008=工作
1023=读故障记录
1024=读运行时间
1025=读客户数据
1027=读出厂数据
1028=读实时数据
1026=保存为TXT
1029=清空接收
1030=English
1042=接收解析
1031=设置
1032=功能参数
1033=占空比
1034=设定电流
1035=设定电压
1036=设定功率
1037=脉冲频率
1038=脉冲电流
1039=预电离
1043=串 口
1044=波特率
1040=串口设置
1041=常用快捷键
2.手动加入其它语言文件 ,可以直接Google翻译
3.控件使用窗口遍历从语言配置文件中读ID号对应的TEXT 并替换
void CVV_485Dlg::setCaptionForWindow() //遍历设置指定窗口所有组件Caption属性代码: { //枚举对话框中所有组件 CWnd *pCtrl = GetWindow(GW_CHILD); while(pCtrl!=NULL) { UINT ctrlID = pCtrl->GetDlgCtrlID(); // setControlCaption(pCtrl,ctrlID); CString str_id,str_text; str_id.Format("%u",ctrlID); GetPrivateProfileString("Form",str_id, "", str_text.GetBuffer(MAX_PATH), MAX_PATH ,lfname); if(""!=str_text) GetDlgItem(ctrlID)->SetWindowText(str_text); pCtrl = pCtrl->GetNextWindow(); } }
void CVV_485Dlg::languagezh() //与文件名转换 \\不好存 { if(language=="Chinese") lfname=".\\Chinese.ini"; else lfname=".\\English.ini"; }
A.在配置文件中加入key相及对应的翻译 Chinese.ini
设定电压:=设定电压:
设定电流:=设定电流:
设定功率:=设定功率:
下位机未响应=下位机未响应
已经读完=已经读完
接收解析为空!=接收解析为空!
运行时间:%02u%02u%02u:%02u=运行时间:%02u%02u%02u:%02u
-%d 串口已打开=-%d 串口已打开
串口已关闭=串口已关闭
title=工业电源控制系统
B.在英文配置文件中,English.ini加入
设定电压:=set vol:
设定电流:=set cur:
设定功率:=set pow:
下位机未响应=lower machine does not respond
已经读完=Finished reading
接收解析为空!=Receive resolve is empty !
运行时间:%02u%02u%02u:%02u=Run time:%02u%02u%02u:%02u
-%d 串口已打开=-%d open
串口已关闭=Serial port closed
title=Industrial Power Control Systems
C.转换函数
CString CVV_485Dlg::translateCString(CString str) { GetPrivateProfileString("Form",str, "", str.GetBuffer(MAX_PATH), MAX_PATH ,lfname); return str; }
MessageBox(translateCString("接收解析为空!"));
str_temp.Format(translateCString("运行时间:%02u%02u%02u:%02u"),js[3+3],js[3+2],js[3+1],js[3+0]);
6.如果以上方法不行,直接用if else判断
我的淘宝店(专业定制程序):http://item.taobao.com/item.htm?spm=a1z10.1.w4801-6324333243.10.CUj1sr&scm=1007.327.0.0&id=37627387931&pvid=759e0470-a75b-4411-bb53-08cb28cbc88f
VC开发多语言界面 多种方法(很简单) 有源码,布布扣,bubuko.com
原文地址:http://blog.csdn.net/chenhao0568/article/details/25629015