VC开发多语言界面 多种方法(很简单) 有源码

文章来源:http://www.itnose.net/detail/6040397.html更多文章:http://www.itnose.net/type/26.html

(需源码先留邮箱)

多种,方法,开发,很简单,源码0

 

多种,方法,开发,很简单,源码1

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();
	}
}

得到文件 Chinese.ini

 

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翻译

多种,方法,开发,很简单,源码2

 

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();
	}
}

4.语言切换

 

 

void CVV_485Dlg::languagezh()  //与文件名转换  \\不好存
{
	if(language=="Chinese")
		lfname=".\\Chinese.ini";
	else
		lfname=".\\English.ini";
}

5.以上为控件切换语言时有效。非控件时,使用下面方法

 

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;	
}

D.示例

 

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判断

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值