본문 바로가기
Development/Visual C++

[MFC] 다국어 RC 제작 방법

by qWooWp 2023. 1. 20.
반응형

구버전 Visual Studio , WDK 등은 Unicode 또는 해당 OS 와 맞지 않는 국가 코드로 Encoding 된 

소스 코드는 빌드를 하지 못하는 버그 가 있습니다. 

 

그래서 하나의 rc 파일에 유니코드 인코딩을 해서 다국어 테이블을 만들어도 빌드 오류를 발생 시킵니다. 

 

하여 Unicode 인코딩을 하여 최신 버전 Visual Studio 2019 를 써서 개발함.

 

각 국가 별로 리소스 DLL 을 제작하여 

String Table 을 추가 합니다. 

 

리소스 제작 방법

 

1. 메뉴 > 새로 만들기 > 프로젝트

 

2. Windows 데스크톱 마법사

 

3. 선택 옵션

 - 빈 프로젝트 

 - DLL 타입

 

4. 생성 후 프로젝트 속성을 연다. 

 링커 > 고급 > 위에서 두번째 항목인 "진입점 없음" 항목에 

예 (/NOENTRY) 로 변경

각 DLL 을 제작 후 아래와 같은 코드로 로딩하여 리소스를 가져온다. 

 

  LANGID langid;

    if (g_hGUIDll != NULL)
        FreeLibrary(g_hGUIDll);

    langid = PRIMARYLANGID(GetSystemDefaultLangID());
    switch(langid & 0xFF)
    {
        case LANG_FRENCH:        
        g_hGUIDll = LoadLibrary("resfre.dll");	
        break;
        case LANG_GERMAN:
        g_hGUIDll = LoadLibrary("resger.dll");	
        break;
        case LANG_SPANISH:
        ....
        
      // Load String from Table
      // iStrId : 리소스에 저장된 문자열 상수 값
      // pRet 리턴되는 문자열을 담을 버퍼
      // 255 : pRet 의 크기 
      
      LoadString(g_hGUIDll, iStrId, pRet, 255);

 

반응형

댓글