源代码地址(专业定制程序: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

VC开发多语言界面 多种方法(非常easy) 有源代码的更多相关文章

  1. Ubuntu下用glade和GTK+开发C语言界面程序(三)——学习make的使用方法

    makefile的规则 makefile的规则例如以下: target ... : prerequisites ... command ... ... target能够是一个object file(目 ...

  2. Ubuntu下用glade和GTK+开发C语言界面程序(一)

    前言:对于大学中计算机系的每年暑假的课设有太多想说的,能从中学到非常多东西,当然不排除打酱油的,这些能够掠过哦,凡事都打酱油.人生也是打酱油的吧. 2333. 对于大三曾经的课设一般的要求都是用C写的 ...

  3. C语言多种方法求解字符串编辑距离问题的代码

    把做工程过程经常用的内容记录起来,如下内容段是关于C语言多种方法求解字符串编辑距离问题的内容. { if(xbeg > xend) { if(ybeg > yend) return 0; ...

  4. 嵌入式开发—C语言面试题

    嵌入式开发—C语言面试题 源地址:http://blog.csdn.net/xdx2ct1314/article/details/7358929   1. 用预处理指令#define 声明一个常数,用 ...

  5. 【应用笔记】【AN001】VC#开发环境下基于以太网的4-20mA电流采集(基于modbus tcp 协议)

    版本:第一版 作者:毛鹏 杨帅 日期:20151108 简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍了以太网接口的4-20mA电流采集模块在VC#环境下进行温 ...

  6. iOS开发核心语言Objective C —— 所有知识点总结

    C和OC对比 OC中主要开发在什么平台上的应用程序?答:可以使用OC开发Mac OS X平台和iOS平台的应用程序 OC中新增关键字大部分是以什么开头?答:OC中新增关键字大部分是以@开头 OC中新增 ...

  7. Android &Swift iOS开发:语言与框架对比

    转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...

  8. python3+django2 开发易语言网络验证(上)

    创作背景: 在某论坛中下载到一套php开发易语言网络验证的教程,照着看下来,花了两天的时间,结果发现教程里开发的网络验证,以及随着教程一起给学员的源码,都存在着根本用不了的bug!我想要看看能不能在原 ...

  9. python3+django2 开发易语言网络验证(中)

    第四步:网络验证的逻辑开发 1.将model注册到adminx.py中 1.在apps/yanzheng目录下新建admin.py 文件,添加代码: import xadmin from xadmin ...

随机推荐

  1. 廖雪峰Java11多线程编程-2线程同步-2synchronized方法

    1.Java使用synchronized对一个方法进行加锁 class Counter{ int count = 0; public synchronized void add(int n){ cou ...

  2. C++萃取技术的一个简单初探

    首先本文并不是讲解C++萃取技术,关于C++的萃取技术网上有很多文章,推荐http://www.cppblog.com/woaidongmao/archive/2008/11/09/66387.htm ...

  3. csps模拟69chess,array,70木板,打扫卫生题解

    题面:https://www.cnblogs.com/Juve/articles/11663898.html 69: 本以为T2傻逼题结果爆零了...T3原题虽然打的不是正解复杂度但是都不记得做过这道 ...

  4. 几何+map套set——cf1163C

    能灵活用map+set的组合就能过这题了 /* 分成三个步骤来做: 1.通过点两两构造线 by=ax+c,先求a,b,再求c,用gcd(d,b)简化 2.线去重:用map+pair 3.统计交点 */ ...

  5. LUOGU P2949 [USACO09OPEN]工作调度Work Scheduling (贪心)

    解题思路 明明一道比较简单的贪心结果挂了好几次23333,就是按照时间排序,然后拿一个小根堆维护放进去的,如果时间允许就入队并且记录答案.如果不允许就从堆里拿一个最小的比较. #include< ...

  6. codevs1222 信与信封的问题

    二分图匹配. 先匹配一次,一定是完美匹配.然后枚举每条边,去掉它,若是不能完美匹配,这条边就必须. #include<cstdio> #include<cstring> #in ...

  7. Laravel 不同环境加载不同的.env文件

    假设有4个.env文件.分别为 .env.local .env.dev .env.test .env.prd 方式一 第一步:bootstrap\app.php 加入代码 $envs = ['loca ...

  8. vue-cli新手总结

    项目中需要用到vue-cli脚手架来搭建前端框架,对于vue小白,总结一下自己遇到的问题以及解决方案,还要学习的地方有很多. vue-cli安装下载网上有很多教程,但对于新手而言,有些地方需要自己摸索 ...

  9. laravel中如何使用Redis(Redis是什么)

    laravel中如何使用Redis(Redis是什么) 一.总结 一句话总结: 基于内存亦可持久化键值数据库 Redis是完全开源免费的,遵守BSD协议,是一个高性能的键值数据库.是当前最热门的的的N ...

  10. 密码学笔记(5)——Rabin密码体制和语义安全性

    一.Rabin密码体制 Rabin密码体制是RSA密码体制的一种,假定模数$n=pq$不能被分解,该类体制对于选择明文攻击是计算安全的.因此,Rabin密码体制提供了一个可证明安全的密码体制的例子:假 ...