• VC开发多语言界面 多种方法(非常easy) 有源代码


    源代码地址(专业定制程序:MCU,Windows,Android 。VC串口,Android蓝牙等不限。)

    (需源代码先留邮箱)先上图




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



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


    我的淘宝店(专业定制程序):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


  • 相关阅读:
    POJ 1163 状态转移
    POJ 1143 记忆化搜索+博弈论
    POJ 1083
    POJ 1018
    HDU 3572 Dinic
    HDU 3549 Dinic
    配置JDK环境变量配置及path和classpath的作用
    frameset 框架整体退出登录的问题
    java计算时间差及比较时间大小(转)
    Android—Http连接之GET/POST请求
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10085290.html
Copyright © 2020-2023  润新知