wince实现应用程序界面中英文切换(EVC4.0)

来源:互联网 发布:jsp物流管理系统源码 编辑:程序博客网 时间:2024/05/01 23:01

wince实现应用程序界面中英文切换(EVC4.0)

   我参照耿海增先生的vc现实方法,改造为EVC使用,创建语言文件CHINESE.LNG ,ENGLISH.LNG,不同是每个窗体都加入一个识别字段。

中文文件CHINESE.LNG

[Language]
language=Chinese
FrmMainCount=189
FrmNewCount=3
FrmAddCount=6
FrmCopyCount=6
FrmDeleteCount=7
FrmAboutCount=2
lng=1
[FrmMain]
IDD102_Title=KnitCtrol2009-haisen
IDD102_1000=读取文件
IDD102_1001=存储文件
IDD102_1002=新增页数
IDD102_1003=增加页数
IDD102_1006=拷贝页数
IDD102_1007=删除页数
IDD102_1008=帮助
[FrmNew]
IDD164_Title=新增页
IDD164_1405=张数号码:
IDD164_1407=执行
IDD164_1408=取消
[FrmAdd]
IDD165_Title=添加页
IDD165_1416=张数号码:
IDD165_1417=张数号码:
IDD165_1412=开头
IDD165_1413=最后
IDD165_1414=执行
IDD165_1415=取消
[FrmCopy]
IDD167_Title=拷贝页
IDD167_1426=起始张数号码:
IDD167_1427=结束张数号码:
IDD167_1428=复制最初的张数编号:
IDD167_1429=复制最终的张数编号:
IDD167_1424=执行
IDD167_1425=取消
[FrmDelete]
IDD166_Title=删除页
IDD166_1437=起始张数号码:
IDD166_1438=结束张数号码:
IDD166_1432=全部张数
IDD166_1433=开头
IDD166_1434=最后
IDD166_1435=执行
IDD166_1436=取消
[FrmAbout]
IDD170_Title=关于
IDD170_1322=取消
IDD170_1461=更多>>

英文文件ENGLISH.LNG

[Language]
language=English
FrmMainCount=189
FrmNewCount=3
FrmAddCount=6
FrmCopyCount=6
FrmDeleteCount=7
FrmAboutCount=2
lng=2
[FrmMain]
IDD102_Title=KnitCtrol2009-haisen
IDD102_1000=OpenFile
IDD102_1001=SaveFile
IDD102_1002=NewPage
IDD102_1003=AddPage
IDD102_1006=CopyPage
IDD102_1007=DeletePage
IDD102_1008=Help
[FrmNew]
IDD164_Title=New
IDD164_1405=Pages:
IDD164_1407=Run
IDD164_1408=Cancel
[FrmAdd]
IDD165_Title=Add
IDD165_1416=Pages:
IDD165_1417=Pages:
IDD165_1412=Begin
IDD165_1413=End
IDD165_1414=Run
IDD165_1415=Cancel
[FrmCopy]
IDD167_Title=Copy
IDD167_1426=BeginPages:
IDD167_1427=EndPages:
IDD167_1428=CopyBeginPages:
IDD167_1429=CopyEndPages:
IDD167_1424=Run
IDD167_1425=Cancel
[FrmDelete]
IDD166_Title=Delete
IDD166_1437=BegingPages:
IDD166_1438=EndPages:
IDD166_1432=AllPages
IDD166_1433=Begin
IDD166_1434=End
IDD166_1435=Run
IDD166_1436=Cancel
[FrmAbout]
IDD170_Title=About
IDD170_1322=Cancel
IDD170_1461=More>>

现实过程有以下几步:

 

1.CIniWR 为网上流行读写INI文件类,直接COPY,呵呵

 

2.最好使用GetModuleFileName函数获得当前路径 ,以便准确读取语言文件。

实现代码:

 CString szCurPath(""); 
 GetModuleFileName(NULL,szCurPath.GetBuffer(MAX_PATH),MAX_PATH); 
 szCurPath.ReleaseBuffer();
 g_szCurPath = szCurPath.Left(szCurPath.ReverseFind('//') + 1);

 

3.SetDialogLanuage函数为设置对话框语言,传递参数有:字段名,窗体的指针,窗体的ID号,语言文件路径(中文或英文)。

 

/*********************************************************************
 * 函数名称:SetDialogLanuage(LPCTSTR lpAppName,CDialog *pDlg,UINT uDlgID,LPCTSTR pFileName)
 * 说明:  * 入口参数:
//      lpAppName[in]         - 字段名

//  lpFileName[in]        - 完整的INI文件名
 * CDialog *pDlg -- 对话框的指针
 *  UINT uDlgID -- 该对话框的ID
 * 作者:
*********************************************************************/
void SetDialogLanuage(LPCTSTR lpAppName,CDialog *pDlg,UINT uDlgID,LPCTSTR pFileName)
{
    CIniWR Ca; 
 CString szKey,szText;
  DWORD dwSize = 1000;
    LPTSTR pReturnedString = (LPTSTR)malloc(dwSize);
   TCHAR*  pDefault=_T("ERROR");

  //读对话框标题
  szKey.Format(_T("IDD%d_Title"),uDlgID);
     
   if (Ca.GetPrivateProfileString(lpAppName, szKey, pDefault,
    pReturnedString,dwSize, pFileName)!=0)
  {
   pDlg->SetWindowText(pReturnedString);
    
  }

  //写入各个子控件的标题文字
  CWnd* pWnd = pDlg->GetWindow(GW_CHILD);
  while(pWnd != NULL)
  {
   szKey.Format(_T("IDD%d_%d"),uDlgID,pWnd->GetDlgCtrlID());
   if (Ca.GetPrivateProfileString(lpAppName, szKey, pDefault,
    pReturnedString,dwSize, pFileName)!=0)
   {
    pWnd->SetWindowText(pReturnedString);
    
   }

   pWnd = pWnd->GetWindow(GW_HWNDNEXT);
  }

 
}

 

完成上面几步,这样就实现了语言切换了!语言表述有不明白的地方,请见谅!

原创粉丝点击