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