//////////////////////////////////////////////////////////////////////////////////// // MultiLanguage.cpp #include "stdafx.h" #include "MultiLanguage.h" CString CMultiLanguage::m_strInilangFilePath;//ini language file full path(inlude filename) CMultiLanguage::CMultiLanguage() { } CMultiLanguage::~CMultiLanguage() { } ////////////////////////////////////////////////////////////// //¡°English string¡±convert to ¡°current language string¡± CString CMultiLanguage::ConvertString(CString strText) { TCHAR val[300]; CString strRet; if (m_strInilangFilePath.GetLength()) { memset(val,0,sizeof(val)); GetPrivateProfileString(_T("String"),strText,_T(""), val,sizeof(val)/sizeof(TCHAR),m_strInilangFilePath); strRet=val; if(strRet.GetLength()> 0) { return strRet; } } const TCHAR *p = _tcsstr(strText, _T(".")); if (p) { strRet = p + 1; } else { strRet = strText; } return strRet; } // set ini file about transfering multi-language text void CMultiLanguage::SetIniFileName(LPCTSTR szLanguageIniFileName) { TCHAR cVal[64] = {0}; CString strRet; CString strConfig = szLanguageIniFileName; strConfig += _T("Config.ini"); GetPrivateProfileString(_T("themes"), _T("Solution"), _T(""), cVal, sizeof(cVal) / sizeof(TCHAR), strConfig); strRet = cVal; if(strRet.GetLength()==0) { //if there is no equal string in ¡°.ini¡±document£¬set the default language£¨English£© strRet = _T("English"); } m_strInilangFilePath = szLanguageIniFileName; m_strInilangFilePath += _T("Language\\"); m_strInilangFilePath += strRet + _T(".lang"); } ////////////////////////////////////////////////////////////// //set the static text in dialog(English to current language) void CMultiLanguage::SetWndStaticText(CWnd * pWnd) { CString strCaption,strText; //set the window text of main windows pWnd->GetWindowText(strCaption); if(strCaption.GetLength()>0) { strText=ConvertString(strCaption); pWnd->SetWindowText(strText); } //set the window text of child windows CWnd * pChild=pWnd->GetWindow(GW_CHILD); CString strClassName; while(pChild) { ////////////////////////////////////////////////////////////////////////// //Added by Jackbin 2005-03-11 strClassName = ((CRuntimeClass*)pChild->GetRuntimeClass())->m_lpszClassName; if(strClassName == "CEdit" || strClassName == "CIPAddressCtrl" || strClassName == "CNetSurveillance") { //next child window pChild=pChild->GetWindow(GW_HWNDNEXT); continue; } ////////////////////////////////////////////////////////////////////////// //set the current text of child windows pChild->GetWindowText(strCaption); strText=ConvertString(strCaption); pChild->SetWindowText(strText); //next child window pChild=pChild->GetWindow(GW_HWNDNEXT); } } CString CMultiLanguage::GetCurrenLanguage() { return m_strInilangFilePath; }