Udostępnij za pośrednictwem


komunikat WM_MOUSEHWHEEL

Wysyłane do aktywnego okna, gdy kółko przewijania myszy jest przechylone lub obracane. Funkcja DefWindowProc propaguje komunikat do elementu nadrzędnego okna. Nie powinno istnieć wewnętrzne przekazywanie komunikatu, ponieważ DefWindowProc propaguje go w łańcuchu nadrzędnym, dopóki nie znajdzie okna, które go przetwarza.

Okno odbiera ten komunikat za pośrednictwem funkcji WindowProc.

#define WM_MOUSEHWHEEL                  0x020E

Parametry

wParam

Słowo o wysokiej kolejności wskazuje odległość obracania koła, wyrażoną w wielokrotnościach lub czynnikach WHEEL_DELTA, która jest ustawiona na 120. Wartość dodatnia wskazuje, że koło zostało obrócone po prawej stronie; wartość ujemna wskazuje, że koło zostało obrócone z lewej strony.

Wyraz o niskiej kolejności wskazuje, czy różne klucze wirtualne nie działają. Ten parametr może być co najmniej jedną z następujących wartości.

Wartość Znaczenie
MK_CONTROL
0x0008
CTRL nie działa.
MK_LBUTTON
0x0001
Lewy przycisk myszy jest wyłączony.
MK_MBUTTON
0x0010
Środkowy przycisk myszy jest wyłączony.
MK_RBUTTON
0x0002
Prawy przycisk myszy jest wyłączony.
MK_SHIFT
0x0004
SHIFT jest wyłączony.
MK_XBUTTON1
0x0020
XBUTTON1 nie działa.
MK_XBUTTON2
0x0040
XBUTTON2 nie działa.

lParam

Wyraz o niskiej kolejności określa współrzędną x wskaźnika względem lewego górnego rogu ekranu.

Wyraz o wysokiej kolejności określa współrzędną y wskaźnika względem lewego górnego rogu ekranu.

Wartość zwracana

Jeśli aplikacja przetwarza ten komunikat, powinna zwrócić zero.

Uwagi

Użyj następującego kodu, aby uzyskać informacje w parametrze wParam.

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

Użyj poniższego kodu, aby uzyskać położenie poziome i pionowe.

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

Jak wspomniano powyżej, współrzędna x znajduje się w krótkiej wartości zwracanej; współrzędna y znajduje się w krótkim (obie reprezentują wartości podpisane, ponieważ mogą przyjmować wartości ujemne w systemach z wieloma monitorami). Jeśli wartość zwracana jest przypisana do zmiennej, możesz użyć makra MAKEPOINTS, aby uzyskać strukturę POINTS z wartości zwracanej. Możesz również użyć makra GET_X_LPARAM lub GET_Y_LPARAM, aby wyodrębnić współrzędną x lub y.

Ważny

Nie należy używać LOWORD lub makr HIWORD wyodrębnić współrzędne x i y położenia kursora, ponieważ te makra zwracają nieprawidłowe wyniki w systemach z wieloma monitorami. Systemy z wieloma monitorami mogą mieć współrzędne ujemne x i y, a LOWORD i HIWORD traktują współrzędne jako ilości niepodpisane.

Obrót koła to wielokrotność WHEEL_DELTA, która jest ustawiona na 120. Jest to próg akcji, który ma zostać podjęty, a jedna taka akcja (na przykład przewijanie jednego przyrostu) powinna wystąpić dla każdej różnicy.

Delta została ustawiona na 120, aby umożliwić firmie Microsoft lub innym dostawcom tworzenie bardziej precyzyjnych kół rozpoznawania (na przykład swobodnie obracającego się koła bez wycięć), aby wysyłać więcej komunikatów na rotację, ale z mniejszą wartością w każdym komunikacie. Aby użyć tej funkcji, możesz dodać przychodzące wartości różnicowe do momentu osiągnięcia WHEEL_DELTA (aby uzyskać tę samą odpowiedź) lub przewinąć częściowe wiersze w odpowiedzi na częstsze komunikaty. Możesz również wybrać stopień szczegółowości przewijania i gromadzić różnice do momentu osiągnięcia.

Wymagania

Wymaganie Wartość
Minimalny obsługiwany klient
Windows Vista [tylko aplikacje klasyczne]
Minimalny obsługiwany serwer
Windows Server 2008 [tylko aplikacje klasyczne]
Nagłówek
Winuser.h (w tym Windowsx.h)

Zobacz też

referencyjne

GET_KEYSTATE_WPARAM

GET_X_LPARAM

GET_Y_LPARAM

GET_WHEEL_DELTA_WPARAM

HIWORD

LOWORD

mouse_event

koncepcyjne

danych wejściowych myszy

innych zasobów

GetSystemMetrics

MAKEPOINTS

PUNKTÓW

SystemParametersInfo