-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathLoadLanguage.cpp
More file actions
78 lines (68 loc) · 1.44 KB
/
LoadLanguage.cpp
File metadata and controls
78 lines (68 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "StdAfx.h"
#include "LoadLanguage.h"
IMPLEMENT_SINGLETON(CLoadLanguage)
void CLoadLanguage::Init(const CString& strPath)
{
m_strPath = strPath;
LoadTips();
}
void CLoadLanguage::LoadSectionToMap(TCHAR* pData,map<int,CString>&mapData)
{
CString strKey;
CString strValue;
while (1)
{
CString strData = pData;
if (strData.IsEmpty())
{
break;
}
int nPos = strData.Find('=');
if (-1 == nPos)
{
break;
}
strKey = strData.Left(nPos);
strValue = strData.Mid(nPos+1);
mapData[_ttoi(strKey)] = strValue;
pData += strData.GetLength()+1;
}
}
void CLoadLanguage::Load(const CString& strSection,CDialogEx* pDialog)
{
static const int nSize = 4*1024;
TCHAR szData[nSize] = {0};
DWORD dwRes = GetPrivateProfileSection(strSection,szData,nSize-1,m_strPath);
map<int,CString> mapData;
LoadSectionToMap(szData,mapData);
for (map<int,CString>::iterator it = mapData.begin();it != mapData.end();++it)
{
int nID = it->first;
if (nID)
{
pDialog->GetDlgItem(nID)->SetWindowTextW(it->second);
}
else
{
pDialog->SetWindowTextW(it->second);
}
}
}
void CLoadLanguage::LoadTips()
{
TCHAR szData[MAX_PATH+500] = {0};
DWORD dwRes = GetPrivateProfileSection(_T("tip"),szData,MAX_PATH+500-1,m_strPath);
LoadSectionToMap(szData,m_mapTips);
}
CString CLoadLanguage::GetTips(int nTipID)
{
auto it = m_mapTips.find(nTipID);
if (it == m_mapTips.end())
{
return CString(_T(""));
}
else
{
return m_mapTips[nTipID];
}
}