WM_INPUTLANGCHANGE messaggio

Inviato alla finestra più interessata in alto dopo la modifica della lingua di input di un'applicazione. È necessario impostare le impostazioni specifiche dell'applicazione e passare il messaggio alla funzione DefWindowProc , che passa il messaggio a tutte le finestre figlio di primo livello. Queste finestre figlio possono passare il messaggio a DefWindowProc per far passare il messaggio alle finestre figlio e così via.

Una finestra riceve questo messaggio tramite la relativa funzione WindowProc.

#define WM_INPUTLANGCHANGE              0x0051

Parametri

wParam

Tipo: **WPARAM**

Set di caratteri BYTE per la lingua di input.

Se si registra la classe window usando la versione Unicode di RegisterClassEx (RegisterClassExW), in genere non è necessario usare questo valore. Se si registra la classe window usando la versione ANSI di RegisterClassEx (RegisterClassExA), questo valore può essere usato per creare tipi di carattere che possano visualizzare correttamente il set di caratteri. Per un elenco dei valori possibili, vedere il parametro iCharSet della funzione CreateFont.

lParam

Tipo: **LPARAM**

Identificatore delle impostazioni locali di input HKL .

La parola bassa contiene un identificatore di lingua per la lingua di input. La parola alta contiene un handle del dispositivo.

Valore restituito

Tipo: LRESULT

Un'applicazione deve restituire un valore diverso da zero se elabora questo messaggio.

Osservazioni:

È possibile recuperare il nome delle impostazioni locali BCP 47dall'identificatore di lingua chiamando la funzione LCIDToLocaleName. Dopo aver ottenuto il nome delle impostazioni locali, è possibile usare le funzioni locali moderne per estrarre informazioni aggiuntive sulle impostazioni locali.

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

Per ottenere il nome del layout di tastiera attualmente attivo, chiama GetKeyboardLayoutName. Per altre informazioni, vedere Lingue, impostazioni locali e layout di tastiera.

Per un elenco dei layout di input forniti con Windows, vedi Identificatori di tastiera e Editor di metodi di input per Windows.

Le modifiche del profilo dell'editor dei metodi di input (IME) potrebbero non essere notificate con WM_INPUTLANGCHANGE. È possibile usare ITfActiveLanguageProfileNotifySink da Text Services Framework per gestire le modifiche del servizio di testo o della lingua attiva.

A partire da Windows 8

Alcuni layout di input potrebbero non avere identificatori di lingua assegnati e potrebbero essere segnalati come identificatori di lingua temporanei, ad esempio LOCALE_TRANSIENT_KEYBOARD1 (0x2000) o LOCALE_TRANSIENT_KEYBOARD2 (0x2400), nella parola bassa di LPARAM.

Poiché questi identificatori di lingua temporanei possono essere riassegnare dal sistema in qualsiasi momento (ad esempio quando l'utente modifica il proprio profilo linguistico) e possono identificare impostazioni locali diverse in base all'utente e/o al sistema, non possono essere considerati identificatori durevoli. Per altre informazioni, vedi Deprecazione di LCID .

Recuperare la lingua associata al layout o al metodo di input della tastiera corrente chiamando Windows.Globalization.Language.CurrentInputMethodLanguageTag. Se l'app passa tag di lingua da CurrentInputMethodLanguageTag a qualsiasi funzione di supporto linguistico nazionale, deve prima convertire i tag con ResolveLocaleName. Se vuoi ricevere una notifica su una modifica della lingua in un'app UWP, gestisci l'evento Windows.UI.Text.Core.CoreTextServicesManager.InputLanguageChanged .

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Winuser.h (include Windows.h)

Vedi anche

Reference

Concettuale