2010-01-28 2 views
3

OS 언어에 따라 대화 상자를 표시하는 응용 프로그램을 개발하는 중입니다. C++ 또는 Windows API (Windows 2008/Vista/7)를 사용하여 OS 언어를 얻는 방법은 무엇입니까?C++ API를 사용하여 OS 언어를 얻는 방법은 무엇입니까?

+0

안녕하십니까, "GetUserDefaultLocaleName"을 사용하여 응용 프로그램을 만들려고했습니다. 하지만 컴파일하는 동안 오류가 발생합니다. 오류 C3861 : 'GetUserDefaultLocaleName': 식별자를 찾을 수 없습니다. "Windows.h"및 "Winnls.h"를 포함하여 시도했습니다. 이 경우 개선되지 않았습니다. Plz 도움말. 미리 감사드립니다. – Santhosha

+0

안녕하세요, int main() { LPWSTR lpLocaleName = NULL; cout << "GetUserDefaultLocaleName 호출하기"; int ret = GetUserDefaultLocaleName (lpLocaleName, LOCALE_NAME_MAX_LENGTH); 0을 반환; } 이것은 Windows 2008 exe 충돌에서이 exe를 실행할 때 작성한 프로그램입니다. 누구든지 도와주세요! – Santhosha

답변

4

정보를 원하는 형식에 따라 Windows에서이 작업을 수행 할 수있는 몇 가지 기능이 있습니다. Windows Vista 이전에는 언어 정보가 언어 및 일부 정보를 포함하는 LCID (로캘 ID)로 인코딩되었습니다 정렬 및 서식 지정.

Windows Vista 및 Windows 7의 경우보다 유연한 시스템 인 로케일 이름이 고안되었습니다. GetSystemDefaultLocaleName

Win2k 및 WinXP에서 작업하려면이 옵션을 사용하십시오. GetSystemDefaultLCID

+0

안녕하세요, "GetUserDefaultLocaleName"을 (를) 사용하여 응용 프로그램을 만들려고했습니다. 하지만 컴파일하는 동안 오류가 발생합니다. 오류 C3861 : 'GetUserDefaultLocaleName': 식별자를 찾을 수 없습니다 "Windows.h"및 "Winnls.h"포함하여 시도했습니다. 이 경우에도 개선되지 않았습니다 .. Plz help. 미리 감사드립니다. – Santhosha

+0

최근 버전의 Windows 헤더 파일 (Visual Studio 2008 또는 2010)을 사용해야하며 '#WINVER 0x0600' 이상이 필요합니다. 그렇지 않으면 헤더 파일로 인해 Windows 이전에 사용할 수 없었던 API에 액세스 할 수 없습니다 추억. –

+0

네 .. 끝났어 .. 고마워, 존 .. 내 하루 만들었 어 :) – Santhosha

1

이 문제를 해결할 수 있습니까?
대답이 아니오이면
LPWSTR lpLocalName=NULL이 잘못되었습니다.
LPWSTR lpLocalName=NULL ---->WCHAR localName[LOCALE_NAME_MAX_LENGTH]이 맞습니다. 메모리 할당이 GetUserDefaultLocalName에 없기 때문에.

+0

당신은 완전히 맞습니다;) –

1

이 질문에 대한 대답은 잘못되었습니다. 이 아니라면은 기본 로케일을 기반으로 사용자 인터페이스를 결정해야합니다. 이 경우 GetDefaultUILanguage을 사용하십시오.

관련 문제