//------------------------------------------------------------------------
// # 관련 변수
//------------------------------------------------------------------------
static TCHAR *m_szLangPack[] =
{
"<MAIN>" ,
"IDC_BTN_CONNECTION" ,
"IDC_BTN_PROCESS" ,
"IDC_BTN_PREVIEW" ,
"IDC_BTN_DATA" ,
"IDC_BTN_MAINT" ,
"IDC_BTN_PARAMETER" ,
"IDC_BTN_ENMERGENCY" ,
"IDC_BTN_CLOSE" ,
"<HISTORY>" ,
"IDC_RDO_MAIN" ,
"IDC_RDO_PROC" ,
"IDC_RDO_SYSTEM" ,
"IDC_RDO_ERROR" ,
"IDC_RDO_SCANNER" ,
"IDC_BTN_CELL_SAVE"
};
static int m_nLangDigNum[] =
{
0,
IDC_BTN_CONNECTION,
IDC_BTN_PROCESS,
IDC_BTN_PREVIEW,
IDC_BTN_DATA,
IDC_BTN_MAINT,
IDC_BTN_PARAMETER,
IDC_BTN_ENMERGENCY,
IDC_BTN_CLOSE,
0,
IDC_RDO_MAIN,
IDC_RDO_PROC,
IDC_RDO_SYSTEM,
IDC_RDO_ERROR,
IDC_RDO_SCANNER,
IDC_BTN_CELL_SAVE
};
// 다음과 같이 이름을 나타내는 문자 배열과 다이얼로그의 번호를 나타내는 정수 배열의 요소 순서가 동일해야 한다.
//------------------------------------------------------------------------
// # 함수
//------------------------------------------------------------------------
// 현재 배열의 갯수 확인
int CPadCutApp::LangInit()
{
return _countof(m_szLangPack);
}
// Ini 파일 읽어서 다이얼로그 이름 변경
void CPadCutApp::ReadLangFile(CString strLang)
{
CString key, str, section;
CString filename;
char inBuf[80];
CString strTemp;
TCHAR szReadData[255];
//------------------------------------------------------------------------
// # 언어 설정에 따른 Ini 파일 경로 선택
//------------------------------------------------------------------------
if(strLang == _T("KOR"))
{
filename = g_sAppPath + LANG_PACK_KOR;
}
else if(strLang == _T("ENG"))
{
filename = g_sAppPath + LANG_PACK_ENG;
}
//------------------------------------------------------------------------
// # ini 파일의 Section 선택
//------------------------------------------------------------------------
for(int i = 0; i < nItemCount; i++)
{
if(m_szLangPack[i] == "<MAIN>")
{
section.Format( _T("MAIN") );
continue;
}
else if(m_szLangPack[i] == "<HISTORY>")
{
section.Format( _T("HISTORY") );
continue;
}
else if(m_szLangPack[i] == "<PARA>")
{
section.Format( _T("PARA") );
continue;
}
//------------------------------------------------------------------------
// # Ini 파일의 내용 Read
//------------------------------------------------------------------------
GetPrivateProfileString (section, m_szLangPack[i], _T("-"), inBuf, 80, filename);
strTemp.Format(_T("%s"), inBuf);
//------------------------------------------------------------------------
// # 다이얼로그의 항목 변경
//------------------------------------------------------------------------
Temp = theApp.m_pMainDlg->m_dlgParameter;
Temp.SetDlgItemTextA(m_nLangDigNum[i],inBuf);
}
}
// 언어 변경 ini 파일의 양식을 출력하기 위해 사용 ( Write 기능 )
void CPadCutApp::WriteLangFile(CString strLang)
{
CString key, str, section;
CString filename;
//------------------------------------------------------------------------
// # 언어 설정에 따른 Ini 파일 경로 선택
//------------------------------------------------------------------------
if(strLang == _T("KOR"))
{
filename = g_sAppPath + LANG_PACK_KOR;
}
else if(strLang == _T("ENG"))
{
filename = g_sAppPath + LANG_PACK_ENG;
}
for(int i = 0; i < nItemCount; i++)
{
if(m_szLangPack[i] == "<MAIN>")
{
section.Format( _T("MAIN") );
continue;
}
else if(m_szLangPack[i] == "<HISTORY>")
{
section.Format( _T("HISTORY") );
continue;
}
else if(m_szLangPack[i] == "<PARA>")
{
section.Format( _T("PARA") );
continue;
}
//------------------------------------------------------------------------
// # ini 파일에 내용 Write
//------------------------------------------------------------------------
str.Format( _T("%s"), m_szLangPack[i] );
WritePrivateProfileString(section, str, _T(""), filename);
}
}
// 수정해야 될 점
1. 다이얼로그의 내용을 갱신하는 부분에서 해당 다이얼로그에 접근 할 수 있도록 구현해야 한다.
-> Section을 통해 if문으로 선택되는 다이얼로그 변수 변경
'[배움] > C++' 카테고리의 다른 글
ULONG_PTR (0) | 2017.11.09 |
---|---|
C++ 문자열 조작[펌] (0) | 2016.11.21 |
C++ MFC 유니코드, 멀티바이트 변환 [ 펌 ] (0) | 2016.11.10 |
CString을 TCHAR로 변환하는 예제 (0) | 2016.11.10 |
MFC 프로그램 아이콘 변경하기[펌] (0) | 2016.11.08 |