WM_INPUTLANGCHANGE 메시지
애플리케이션의 입력 언어가 변경된 후 영향을 받는 맨 위 창으로 전송됩니다. 애플리케이션별 설정을 만들고 모든 첫 번째 수준 자식 창에 메시지를 전달하는 DefWindowProc 함수에 메시지를 전달해야 합니다. 이러한 자식 창은 메시지를 DefWindowProc 에 전달하여 메시지를 자식 창에 전달하는 등의 작업을 수행할 수 있습니다.
창은 WindowProc 함수를 통해 이 메시지를 받습니다.
#define WM_INPUTLANGCHANGE 0x0051
매개 변수
-
wParam
-
형식: **WPARAM**
입력 언어에 대한 BYTE 글꼴 문자 집합입니다.
RegisterClassEx(RegisterClassExW)의 유니코드 버전을 사용하여 창 클래스를 등록하는 경우 일반적으로 이 값을 사용할 필요가 없습니다. RegisterClassEx(RegisterClassExA)의 ANSI 버전을 사용하여 창 클래스를 등록하는 경우 이 값을 사용하여 문자 집합을 올바르게 표시할 수 있는 글꼴을 만들 수 있습니다. 가능한 값 목록은 CreateFont 함수의 iCharSet 매개 변수를 참조하세요.
-
lParam
-
형식: **LPARAM**
HKL 입력 로캘 식별자입니다.
낮은 단어에는 입력 언어에 대한 언어 식별자가 포함됩니다. 상위 단어에는 디바이스 핸들이 포함되어 있습니다.
반환 값
형식: LRESULT
애플리케이션이 이 메시지를 처리하는 경우 0이 아닌 값을 반환해야 합니다.
설명
LCIDToLocaleName 함수를 호출하여 언어 식별자에서 BCP 47로캘 이름을 검색할 수 있습니다. 로캘 이름이 있으면 최신 로캘 함수를 사용하여 추가 로캘 정보를 추출할 수 있습니다.
case WM_INPUTLANGCHANGE:
{
HKL hkl = (HKL)lParam;
// LANGIDs are deprecated. Use BCP 47 locale names where possible.
LANGID langId = LOWORD(HandleToUlong(hkl));
WCHAR localeName[LOCALE_NAME_MAX_LENGTH];
LCIDToLocaleName(MAKELCID(langId, SORT_DEFAULT), localeName, LOCALE_NAME_MAX_LENGTH, 0);
// Get the ISO abbreviated language name (for example, "eng").
WCHAR lang[9];
GetLocaleInfoEx(localeName, LOCALE_SISO639LANGNAME2, lang, 9);
// Get the keyboard layout identifier (for example, "00020409" for United States-International keyboard layout)
WCHAR keyboardLayoutId[KL_NAMELENGTH];
GetKeyboardLayoutNameW(keyboardLayoutId);
}
현재 활성 키보드 레이아웃의 이름을 얻으려면 GetKeyboardLayoutName을 호출합니다. 자세한 내용은 언어, 로캘 및 키보드 레이아웃을 참조 하세요.
Windows와 함께 제공되는 입력 레이아웃 목록은 Windows용 키보드 식별자 및 입력 메서드 편집기를 참조하세요.
IME(입력 방법 편집기) 프로필 변경 내용은 WM_INPUTLANGCHANGE 알림이 표시되지 않을 수 있습니다. Text Services 프레임워크에서 ITfActiveLanguageProfileNotifySink를 사용하여 활성 언어 또는 텍스트 서비스 변경 내용을 처리할 수 있습니다.
Windows 8부터
일부 입력 레이아웃에는 할당된 언어 식별자가 없을 수 있으며 LPARAM의 낮은 단어에서 (0x2000
) 또는 LOCALE_TRANSIENT_KEYBOARD2
(0x2400
)와 같은 LOCALE_TRANSIENT_KEYBOARD1
일시적인 언어 식별자로 보고될 수 있습니다.
이러한 임시 언어 식별자는 언제든지 시스템에서 다시 할당할 수 있으며(예: 사용자가 언어 프로필을 변경하는 경우) 사용자 및/또는 시스템에 따라 다른 로캘을 식별할 수 있으므로 지속성 식별자로 간주될 수 없습니다. 자세한 내용은 LCID 사용 중단을 참조하세요.
Windows.Globalization.Language.CurrentInputMethodLanguageTag를 호출 하여 현재 키보드 레이아웃 또는 입력 메서드와 연결된 언어를 검색합니다. 앱이 CurrentInputMethodLanguageTag의 언어 태그를 국가별 언어 지원 함수로 전달하는 경우 먼저 ResolveLocaleName을 사용하여 태그를 변환해야 합니다. UWP 앱의 언어 변경에 대한 알림을 받으려면 Windows.UI.Text.Core.CoreTextServicesManager.InputLanguageChanged 이벤트를 처리합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 |
Windows 2000 Server[데스크톱 앱만] |
헤더 |
|
추가 정보
참조
- DefWindowProc
- WindowProc
- WM_INPUTLANGCHANGEREQUEST
- GetKeyboardLayout
- GetKeyboardLayoutList
- GetKeyboardLayoutName
- Windows.Globalization.Language.CurrentInputMethodLanguageTag
- Windows.UI.Text.Core.CoreTextServicesManager.InputLanguageChanged
개념