2009년 10월 29일 목요일

다국어 버전을 위한 대화상자 템플릿 설정

한국어 OS에서 만든 대화상자는 영어 OS에서 완전히 망가져 보인다.

이를 해결하기 위한 방법중 템플릿을 이용한 방법이 있다.

 

1. 리소스에디터에서 대화상자의 Language 속성을 "기본 언어 처리"로 변경한다.

 

2. 아래 코드를 추가한다.

   #include <afxpriv.h>

 

3. 대화상자에 DoModal() 함수를 오버라이드하고 아래와 같이 추가한다.

    붉은색 부분은 클래스 이름을 써주고 파란색부분에는 폰트 이름과 사이즈를 넣어준다.

 

INT_PTR CDlgSplash::DoModal()
{
   CDialogTemplate dlt;
   int nResult;

   if(!dlt.Load(MAKEINTRESOURCE(CDlgSplash::IDD)))
      return -1;

   dlt.SetFont(theApp.m_Reg.GetFontFace(), (WORD) theApp.m_Reg.GetFontSize());

   LPSTR pdata = (LPSTR)GlobalLock(dlt.m_hTemplate);

   m_lpszTemplateName = NULL;
   InitModalIndirect(pdata);

   nResult = CDialog::DoModal();

   GlobalUnlock(dlt.m_hTemplate);

   return nResult;
}

댓글 없음:

댓글 쓰기