WM_INPUTLANGCHANGE訊息

變更應用程式輸入語言之後,傳送至最上層受影響的視窗。 您應該進行任何應用程式特定的設定,並將訊息傳遞至 DefWindowProc 函式,此函式會將訊息傳遞至所有第一層子視窗。 這些子視窗可以將訊息傳遞至 DefWindowProc ,使其將訊息傳遞至其子視窗等等。

視窗會透過其 WindowProc 函式接收此訊息。

#define WM_INPUTLANGCHANGE              0x0051

參數

wParam

類型:**WPARAM**

輸入 語言的 BYTE 字型字元集。

如果您使用 RegisterClassEx 的 Unicode 版本註冊視窗類別 RegisterClassExW ),您通常不需要使用此值。 如果您使用 RegisterClassEx 的 ANSI 版本註冊視窗類別 RegisterClassExA ),這個值可用來建立可正確顯示字元集的字型。 如需可能的值清單,請參閱 CreateFont 函 式的 iCharSet 參數。

lParam

類型:**LPARAM**

HKL 輸入地區設定識別碼。

低字包含 輸入語言的語言識別項 。 高字包含裝置控制碼。

傳回值

類型: LRESULT

如果應用程式處理此訊息,應用程式應該會傳回非零。

備註

您可以呼叫 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 通知。 您可以從文字服務架構 使用 ITfActiveLanguageProfileNotifySink 來處理使用中語言或文字服務變更。

從 Windows 8 開始

某些輸入配置可能沒有指派的語言識別項,而且可能會在 LPARAM 的低字中報告為暫時性語言識別項,例如 LOCALE_TRANSIENT_KEYBOARD10x2000 ) 或 LOCALE_TRANSIENT_KEYBOARD20x2400 )。

由於系統可以隨時重新指派這些暫時性語言識別項(例如當使用者變更其語言設定檔時),而且可以根據使用者和/或系統來識別不同的地區設定,因此不能被視為永久性識別碼。 如需詳細資訊,請參閱 取代 LCID

呼叫 Windows.Globalization.Language.CurrentInputMethodLanguageTag ,以擷取與目前鍵盤配置或輸入法相關聯的語言。 如果您的應用程式將語言標籤從 CurrentInputMethodLanguageTag 傳遞至任何 國家語言支援 函式,則必須先使用 ResolveLocaleName 轉換標籤。 如果您想要在 UWP app 中收到語言變更的通知,請處理 Windows.UI.Text.Core.CoreTextServicesManager.InputLanguageChanged 事件。

需求

需求
最低支援的用戶端
Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
標題
Winuser.h (包括 Windows.h)

另請參閱

參考

概念