Message WM_MOUSEWHEEL

Envoyé à la fenêtre de focus lorsque la roulette de la souris est actionnée. La fonction DefWindowProc propage le message au parent de la fenêtre. Il ne doit pas y avoir de transfert interne du message, car DefWindowProc le propage dans la chaîne parente jusqu’à ce qu’il trouve une fenêtre qui le traite.

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

#define WM_MOUSEWHEEL                   0x020A

Paramètres

wParam

Le terme d’ordre élevé indique la distance de rotation de la roue, exprimée en multiples ou divisions de WHEEL_DELTA, soit 120. Une valeur positive indique que la roue a été actionnée vers l’avant, face à l’utilisateur ; une valeur négative indique que la roue a été actionnée vers l’arrière, en direction de l’utilisateur.

Le mot d’ordre inférieur indique si diverses touches virtuelles sont enfoncées. Ce paramètre peut prendre l’une ou plusieurs des valeurs suivantes.

Valeur Signification
MK_CONTROL
0x0008
La touche CTRL est enfoncée.
MK_LBUTTON
0x0001
Le bouton gauche de la souris est enfoncé.
MK_MBUTTON
0x0010
Le bouton central de la souris est enfoncé.
MK_RBUTTON
0x0002
Le bouton droit de la souris est enfoncé.
MK_SHIFT
0x0004
La touche MAJ est enfoncée.
MK_XBUTTON1
0x0020
Le premier bouton X est enfoncé.
MK_XBUTTON2
0x0040
Le deuxième bouton X est enfoncé.

lParam

Le terme d’ordre faible spécifie la coordonnée x du pointeur, par rapport au coin supérieur gauche de l’écran.

Le terme d’ordre élevé spécifie la coordonnée y du pointeur, par rapport au coin supérieur gauche de l’écran.

Valeur retournée

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

Notes

Utilisez le code suivant pour obtenir les informations dans le paramètre wParam :

fwKeys = GET_KEYSTATE_WPARAM(wParam);
zDelta = GET_WHEEL_DELTA_WPARAM(wParam);

Utilisez le code suivant pour obtenir la position horizontale et verticale :

xPos = GET_X_LPARAM(lParam); 
yPos = GET_Y_LPARAM(lParam); 

Comme indiqué ci-dessus, la coordonnée x est dans l’ordre inférieur court de la valeur de retour ; la coordonnée y est dans l’ordre supérieur court (les deux représentent des valeurs signées, car elles peuvent prendre des valeurs négatives sur des systèmes avec plusieurs moniteurs). Si la valeur retournée est affectée à une variable, vous pouvez utiliser la macro MAKEPOINTS pour obtenir une structure POINTS à partir de la valeur de retour. Vous pouvez également utiliser la macro GET_X_LPARAM ou GET_Y_LPARAM pour extraire la coordonnée x ou y.

Important

N’utilisez pas les macros LOWORD ou HIWORD pour extraire les coordonnées x et y de la position du curseur, car ces macros retournent des résultats incorrects sur les systèmes avec plusieurs moniteurs. Les systèmes avec plusieurs moniteurs peuvent avoir des coordonnées x et y négatives, et LOWORD et HIWORD traitent les coordonnées comme des quantités non signées.

La rotation de la roulette sera un multiple de WHEEL_DELTA, défini à 120. Il s’agit du seuil de déclenchement de l’action, et une action de ce type (par exemple, le défilement d’un incrément) doit se produire pour chaque delta.

Le delta a été défini sur 120 pour permettre à Microsoft ou à d’autres fournisseurs de créer des roulettes à résolution plus élevée (une roulette à rotation libre sans encoche) pour envoyer plus de messages par rotation, mais avec une valeur plus petite dans chaque message. Pour utiliser cette fonctionnalité, vous pouvez ajouter les valeurs delta entrantes jusqu’à atteindre la valeur WHEEL_DELTA (ainsi, pour une rotation delta, vous obtenez la même réponse), ou faire défiler des lignes partielles en réponse aux messages plus fréquents. Vous pouvez également choisir votre granularité de défilement et accumuler des deltas jusqu’à atteinte la valeur souhaitée.

Notez qu’il n’existe pas de fwKeys pour MSH_MOUSEWHEEL. Sinon, les paramètres sont exactement les mêmes que pour WM_MOUSEWHEEL.

L’application décide de transférer ou non MSH_MOUSEWHEEL à tous les objets ou contrôles incorporés. L’application est requise pour envoyer le message à une application OLE incorporée active. (Facultatif) L’application envoie le message à un contrôle à roulette avec focus. Si l’application envoie effectivement le message à un contrôle, elle peut consulter la valeur de retour pour vérifier si le message a été traité. Les contrôles sont requis pour retourner la valeur TRUE s’ils traitent le message.

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 Windowsx.h)

Voir aussi

Référence

GET_KEYSTATE_WPARAM

GET_X_LPARAM

GET_Y_LPARAM

GET_WHEEL_DELTA_WPARAM

HIWORD

LOWORD

mouse_event

Conceptuel

Entrées de la souris

Autres ressources

GetSystemMetrics

MAKEPOINTS

POINTS

SystemParametersInfo