이 노트에서는 일부 디자인 및 지역화 구성 요소, 응용 프로그램 또는 OLE 컨트롤 또는 MFC를 사용 하는 DLL을 사용할 수 있는 절차를 설명。
개요
정말 MFC를 사용 하는 구성 요소를 지역화 하는 경우를 해결 하기 위해 두 가지 문제가 있습니다. 첫째, 자신의 리소스-문자열, 대화 상자 및 해당 구성 요소에 관련 된 기타 리소스를 지역화 해야 합니다. 또한 MFC를 사용 하 여 만든 대부분의 구성 요소를 포함 하 고 다양 한 MFC에 의해 정의 된 리소스를 사용 하 여. 뿐만 아니라 지역화 된 MFC 리소스를 제공 해야 합니다. MFC 자체에서 이미 제공 하는 여러 가지 언어 다행히도,。
대상 환경에서 실행 되도록 구성 요소를 준비 해야 또한, (유럽, 또는 DBCS 사용 환경). 대부분의 경우,이 높은 비트 설정 문자를 올바르게 치료 하 고 더블 바이트 문자로 문자열 처리 응용 프로그램에 따라 다릅니다. MFC 되어, 기본적으로 모두 이러한 환경에 대 한 그것은 그냥 다른 리소스 설치 시 연결 모든 플랫폼에서 사용 되는 단일 "월드 와이드" 이진을 가질 수는。
구성 요소의 리소스 지역화
응용 프로그램 또는 DLL을 지역화 단순히 대상 언어와 일치 하는 리소스와 리소스를 교체 하는 것을 포함 한다. 당신의 자신의 리소스에 대 한 이것은 비교적 간단 하다: 리소스 편집기에서 리소스를 편집 하 고 응용 프로그램을 구축 합니다. 아무 문자열이 나 텍스트를 지역화 하드 코딩 된 c + + 소스 코드-에 있을 것입니다 귀하의 코드가 제대로 작성 된 경우에 모든 지역화 단순히 리소스를 수정 하 여 수행할 수 있습니다. 사실, 그런 모든 지역화 된 버전을 제공 하더라도 원래 코드의 작성은도 포함 하지 않는 구성 요소를 구현할 수 있습니다. 이 더 복잡 하지만 그만한 가치가 고 MFC 자체에 대 한 선택 하는 메커니즘입니다. 또한 리소스 편집기에 EXE 또는 DLL 파일을 로드 하 고 리소스를 직접 편집 하 여 응용 프로그램을 지역화 하는 것이 불가능 합니다. 그러나이 요구 사항 응용 프로그램의 새 버전을 작성할 때마다 재활용 하는 것이 그것이 가능。
방지 하는 한 가지 방법은 위성 DLL이 라고도 하는 별도 DLL의 모든 리소스를 찾을 것. 다음이 DLL은 런타임 시에 동적으로 로드 및 리소스를 귀하의 코드와 함께 주요 모듈에서 대신 DLL에서 로드 됩니다. MFC는 직접이 방법을 지원합니다. MYAPP 라는 응용 프로그램을 고려 합니다.EXE; 그것은 모두 MYRES 라는 DLL에 있는 리소스를가지고 있다.DLL. 응용 프로그램에서의 InitInstance 해당 DLL을 로드 하 고 해당 위치에서 리소스를 로드 하는 MFC를 발생을 다음을 수행 하는 것이:
CMyApp::InitInstance()
{
/ / 초기화 코드에서 첫 번째 사물의
HINSTANCE hInst = LoadLibrary("myres.dll");
경우 (hInst! = NULL)
AfxSetResourceHandle(hInst);
/ / 기타 초기화 코드에 따라
.
.
.
}
다음에서 MFC myapp.exe에서 대신 DLL에서 리소스를 로드 합니다. 그러나 모든 리소스를 있어야 그 DLL-MFC 주어진된 자원의 검색 응용 프로그램의 인스턴스를 검색 하지 않습니다. 이 기술은 OLE 컨트롤 뿐만 아니라 동등 하 게 잘 일반 Dll에 적용 됩니다. 설치 프로그램 MYRES의 적절 한 버전을 복사할 것 이다.사용자는 리소스의 로케일에 따라 DLL 싶습니다.
그것은 상대적으로 쉽게 만들 리소스 전용 DLL. DLL 프로젝트를 만들고, 추가.RC 파일, 그것을 하 고 필요한 리소스를 추가 합니다. 만약 당신이이 기술을 사용 하지 않는 기존 프로젝트, 해당 프로젝트에서 리소스를 복사할 수 있습니다. 프로젝트에 리소스 파일을 추가한 후 프로젝트를 빌드할 준비가 거의 있습니다. 당신이 해야 할 유일한 것은 링커에 /NOENTRY를 포함 하도록 옵션 설정입니다. 이렇게 링커가 DLL 진입점-가 없는 진입점은 아무 코드 이후。
메모nbsp;??리소스 편집기 Visual c + + 4.0 이상과 당 여러 언어를 지원 합니다.RC 파일입니다. 이 단일 프로젝트에서 지역화 관리 하기 매우 쉬운 그것을 만들 수 있습니다. 각 언어에 대 한 리소스가 리소스 편집기에 의해 생성 된 전처리기 지시문에 의해 제어 됩니다(&N).
제공 된 MFC를 사용 하 여 지역화 리소스
빌드할 모든 MFC 응용 프로그램 re-uses MFC에서 두 가지: 코드 및 리소스. 즉, MFC는 다양 한 오류 메시지, 기본 제공 대화 상자 및 MFC 클래스에서 사용 되는 기타 리소스. 응용 프로그램을 완전히 지역화 하기 위해서는 응용 프로그램의 리소스, 뿐만 아니라 MFC에서 직접 제공 하는 리소스를 지역화 해야 합니다. MFC 제공 다양 한 다른 언어 리소스 파일 자동으로, 그래서를 타겟팅 하는 언어 MFC에서 이미 지원 언어 중 하나 이면 그냥 해야 이러한 지역화 된 리소스를 사용 하 여 있는지 확인 하십시오.
MFC 지원이 글을이 쓰는 중 하나로 서: 중국어, 독일어, 스페인어, 프랑스어, 이탈리아어, 일본어 및 한국어. 이러한 지역화 된 버전을 포함 하는 파일은 MFC\INCLUDE\L.*에 있습니다 ('L'에 대 한 지역화의 약자) 디렉터리. 독일 파일 MFC\INCLUDE\L.DEU, 예를 들어 있습니다. 단순히 추가 MFC\INCLUDE에 있는 파일 대신이 RC 파일을 사용 하도록 응용 프로그램을 발생 하는 /IC:\PROGRAM FILES\DEVSTUDIO\VC\MFC\INCLUDE\L.DEU RC 커맨드 라인에 (이것은 단지 예제-Visual c + +를 설치한 디렉터리 선택의 로캘을 대체 해야)。
위의 지침은 응용 프로그램 MFC와 정적으로 링크 하는 경우 작동 합니다. 대부분의 응용 프로그램 링크를 동적으로 (그 이유는 AppWizard 기본값). 이 시나리오에서 뿐만 아니라 코드는 동적으로 리소스 되므로 연결. 그 결과, 응용 프로그램의 리소스를 지역화할 수 있지만 MFC 구현 리소스 여전히 로드 됩니다 또는 mfc4xloc.dll는 MFC4x.DLL (또는 이후 버전)에서 존재 하는 경우. 이 두 개의 서로 다른 각도에서 접근 수 있습니다.
기능만 Professional 및 Enterprise Edition에nbsp;??Mfc 정적 링크 기능이 Visual c + + Professional 및 Enterprise Edition에만 지원 됩니다. 자세한 내용은 참조 Visual c + + 버전(&N)。
더 복잡 한 접근 우주선 지역화 된 MFC4xLOC.DLLs 중 하나 (예: MFC4xDEU, 독일어, 스페인어, 등등에 대 한 MFC4xESP.DLL), 또는 최신 버전 이며 사용자가 응용 프로그램을 설치할 때 시스템 디렉터리에 적절 한 mfc4xloc.dll를 설치 합니다. 이 개발자와 최종 사용자 모두에 대 한 매우 복잡 해질 수 있습니다와 같은 권장 하지 않습니다. 이 기술 및 그것의 주의 사항에 대 한 자세한 내용은 기술 노트 56 참조。
간단 하 고 안전한 방법은 하나를 사용 하는 경우 응용 프로그램 또는 자체 (또는 해당 위성 DLL) DLL에 지역화 된 MFC 리소스를 포함 하는 것. 이 mfc4xloc.dll를 제대로 설치 하는 문제를 방지할 수 있습니다. 이렇게 하려면 정적 경우 (RC 커맨드 라인 올바르게 지역화 된 리소스를 가리키도록 설정) 위의 같은 지침을 따르십시오, 당신은 또한 제거 해야 합니다 제외 합니다 /D_AFXDLL 는 정의 Appwizard에 의해 추가 되었습니다. 때 /D_AFXDLL 은 AFXRES을 정의 합니다.H (및 다른 MFC RC 파일) 하지 실제로 어떤 리소스 정의 (왜냐하면 그들은 MFC Dll에서 대신 오게 될 것입니다)。
기술 노트 번호로 |nbsp; 카테고리별 기술 노트(&N)