WM_KEYDOWN message

Publié dans la fenêtre avec le focus clavier quand une touche non système est enfoncée. Une touche non système est une touche qui est enfoncée lorsque la touche ALT n’est pas enfoncée.

#define WM_KEYDOWN                      0x0100

Paramètres

wParam

Code de clé virtuelle de la clé non système. Consultez Codes de clé virtuelle.

lParam

Le nombre de répétitions, le code d’analyse, l’indicateur de clé étendue, le code de contexte, l’indicateur d’état de clé précédent et l’indicateur d’état de transition, comme indiqué ci-dessous.

Bits Signification
0-15 Nombre de répétitions pour le message actif. La valeur est le nombre de fois où la frappe est répérée automatiquement en raison de la position de l’utilisateur qui maintient la touche enfoncée. Si la frappe est suffisamment longue, plusieurs messages sont envoyés. Toutefois, le nombre de répétitions n’est pas cumulatif.
16-23 Code d’analyse. La valeur dépend de l’OEM.
24 Indique si la touche est une touche étendue, telle que les touches ALT et CTRL de droite qui s’affichent sur un clavier à 101 ou 102 touches amélioré. La valeur est 1 s’il s’agit d’une clé étendue ; sinon, c’est 0.
25-28 Réservés au; n’utilisez pas.
29 Code de contexte. La valeur est toujours 0 pour un message WM_KEYDOWN .
30 État de clé précédent. La valeur est 1 si la clé est en panne avant l’envoi du message, ou elle est égale à zéro si la clé est up.
31 État de transition. La valeur est toujours 0 pour un message WM_KEYDOWN .

Pour plus d’informations, consultez Indicateurs de message de frappe.

Valeur retournée

Une application doit retourner zéro si elle traite ce message.

Exemple

LRESULT CALLBACK HostWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message) 
    {
    case WM_KEYDOWN:
        if (wParam == VK_ESCAPE)
        {
            if (isFullScreen) 
            {
                GoPartialScreen();
            }
        }
        break;

    // ...
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;  
}

Exemples classiques Windows sur GitHub.

Notes

Si la touche F10 est enfoncée, la fonction DefWindowProc définit un indicateur interne. Lorsque DefWindowProc reçoit le message WM_KEYUP , la fonction vérifie si l’indicateur interne est défini et, le cas échéant, envoie un message WM_SYSCOMMAND à la fenêtre de niveau supérieur. Le paramètre WM_SYSCOMMAND du message est défini sur SC_KEYMENU.

En raison de la fonctionnalité de rééplication automatique, plusieurs messages WM_KEYDOWN peuvent être publiés avant la publication d’un message WM_KEYUP . L’état de clé précédent (bit 30) peut être utilisé pour déterminer si le message WM_KEYDOWN indique la première transition vers le bas ou une transition descendante répétée.

Pour les claviers à 101 et 102 touches améliorés, les touches étendues sont les touches Alt et Ctrl à droite de la section main du clavier ; les touches INS, DEL, HOME, END, PAGE HAUT, PAGE VERS LE BAS et les touches de direction dans les clusters à gauche du pavé numérique; ainsi que les touches diviser (/) et ENTRÉE dans le pavé numérique. D’autres claviers peuvent prendre en charge le bit de touche étendue dans le paramètre lParam .

Les applications doivent passer wParam à TranslateMessage sans le modifier du tout.

Spécifications

Condition requise Valeur
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 (inclure Windows.h)

Voir aussi