Partager via


message WM_INPUTLANGCHANGE

Envoyé à la fenêtre de premier plan la plus affectée après la modification du langage d'entrée d'une application. Vous devez définir des paramètres spécifiques à l’application et transmettre le message à la fonction DefWindowProc, qui transmet le message à toutes les fenêtres enfants de premier niveau. Ces fenêtres enfants peuvent transmettre le message à DefWindowProc pour qu’elle la répercute à ses fenêtres enfants, et ainsi de suite.

Une fenêtre reçoit ce message à travers sa fonction WindowProc.

#define WM_INPUTLANGCHANGE              0x0051

Paramètres

wParam

Type : **WPARAM**

Jeu de caractères de police BYTE pour la langue d’entrée.

Si vous enregistrez la classe de fenêtre à l’aide de la version Unicode de RegisterClassEx (RegisterClassExW), vous n’avez généralement pas besoin d’utiliser cette valeur. Si vous enregistrez la classe de fenêtre à l’aide de la version ANSI de RegisterClassEx (RegisterClassExA), cette valeur peut être utilisée pour créer des polices qui peuvent afficher correctement le jeu de caractères. Consultez le paramètre iCharSet de la fonction CreateFont pour obtenir la liste des valeurs possibles.

lParam

Type : **LPARAM**

Identificateur de paramètres régionaux d’entrée HKL.

Le mot bas contient un identificateur de langue pour la langue d’entrée. Le mot élevé contient un handle d’appareil.

Valeur retournée

Type : LRESULT

Si une application traite ce message, elle doit retourner non zéro.

Notes

Vous pouvez récupérer le nom des paramètres régionauxBCP 47 à partir de l’identificateur de langue en appelant la fonction LCIDToLocaleName. Une fois que vous avez le nom des paramètres régionaux, vous pouvez utiliser les fonctions de paramètres régionaux modernes pour extraire des informations locales supplémentaires.

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);
}

Pour obtenir le nom de la disposition du clavier actuellement active, appelez GetKeyboardLayoutName. Pour plus d’informations, consultez Langues, paramètres régionaux et dispositions du clavier.

Pour obtenir la liste des dispositions d’entrée fournies avec Windows, consultez Identificateurs de clavier et Éditeurs de méthode d’entrée pour Windows.

Les modifications de profil IME (Input Method Editor) peuvent ne pas faire l’objet de notifications avec WM_INPUTLANGCHANGE. Vous pouvez utiliser ITfActiveLanguageProfileNotifySink à partir de Text Services Framework pour gérer les modifications apportées à la langue active ou au service de texte.

À compter de Windows 8

Certaines dispositions d’entrée peuvent ne pas avoir attribué d’identificateurs de langue et peuvent être signalées en tant qu’identificateurs de langue temporaires, tels que LOCALE_TRANSIENT_KEYBOARD1 (0x2000) ou LOCALE_TRANSIENT_KEYBOARD2 (0x2400), dans le mot bas de LPARAM.

Comme ces identificateurs de langue temporaires peuvent être réaffectés par le système à tout moment (par exemple, lorsque l’utilisateur modifie son profil de langue) et peuvent identifier des paramètres régionaux différents en fonction de l’utilisateur et/ou du système, ils ne peuvent pas être considérés comme des identificateurs durables. Pour plus d’informations, consultez la dépréciation des LCID.

Récupérez la langue associée à la disposition du clavier ou à la méthode d’entrée actuelle en appelant Windows.Globalization.Language.CurrentInputMethodLanguageTag. Si votre application transmet des balises de langue de CurrentInputMethodLanguageTag à une fonction de support de langue nationale quelconque, elle doit d’abord convertir les balises avec ResolveLocaleName. Si vous souhaitez être averti d’une modification de langue dans une application UWP, gérez l’événement Windows.UI.Text.Core.CoreTextServicesManager.InputLanguageChanged.

Spécifications

Condition requise Value
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Winuser.h (y compris Windows.h)

Voir aussi

Référence

Conceptuel