2016-06-01 4 views
0

내 적절한 MFC 응용 프로그램에서 다른 언어 파일 (.rc)에 3 개의 다른 언어 (jap, eng, russian) 및 다른 3 개의 리소스 파일을 포함하는 하나의 main.rc 파일에 대한 적절한 .rc 파일을 선택하십시오. 리소스 파일에는 서로 다른 언어로 된 동일한 리소스 문자열이 포함되며 모두 동일한 리소스 헤더 resource.h를 포함합니다. 사용자가 응용 프로그램을 실행하면 사용자에게 하나의 언어를 선택하라는 팝업 창이 나타납니다. 사용자 선택 응용 프로그램에 따라 리소스를로드 할 적절한 rc를 선택해야합니다.언어 선택

사용자가 하나의 언어 응용 프로그램을 선택하면 적절한 리소스 파일을 선택할 수있는 방법이 있습니까?

+1

운영 체제는 이미 사용자가 선호하는 언어를 알고 있습니다. 그는 일반적으로 언어 바를 사용하는 것을 선호합니다. 선택을 사용자에게 맡기지 않고 어떤 이유로 강제로 선택하려면 SetThreadPreferredUILanguages ​​()를 사용하십시오. XP에서는 SetThreadUILanguage()를 사용하십시오. –

답변

3

MFC에서이 작업은 위성 DLL을 통해 수행됩니다.

각 언어 RC를 별도의 DLL에 배치하십시오. 응용 프로그램로드시 특정 언어 DLL을로드하고 AfxSetResourceHandle을이 핸들과 함께 사용하십시오.

이 경우 리소스는이 DLL에서 검색됩니다.

+0

.rc 파일에는 10-15 개의 리소스 문자열 만 있고, 다른 .rc 파일에 대한 DLL은 아무것도 만들지 않습니다. –

+1

@VishalChavan 문자열을 같은 .rc 파일 (예 : jap : 1000-1999, eng : 2000-2999, rus : 3000-3999)의 다른 범위에 넣을 수 있으며 언어에 따라 현재있는 ID에 오프셋을 적용합니다. LoadString을 전달합니다. –

+1

나는 Michael Walz의 생각을지지한다. 난 다른 ID를하지 않고 하나의 exe 안에서이 작업을 수행하는 방법을 알고. – xMRi

0

다른 방법으로 stringtables을 프로젝트에 추가하는 것을 고려해보십시오.

자세한 내용은 여기에 제공됩니다

http://www.dev102.com/2008/10/20/how-to-localize-your-application-using-string-tables/

기본적으로, 당신은 추가 테이블을 추가하고 리소스 편집기에서 문화 정보를 설정합니다. 그런 다음 값을 가져 오기 전에 해당 문화권을 지정할 수 있습니다.

제공된 예제는 C# 용이지만 원칙은 동일합니다.

필요한 경우 앞으로 전달할 수 있습니다.