共用方式為


WM_MOUSEWHEEL訊息

當滑鼠滾輪旋轉時,傳送至焦點視窗。 DefWindowProc 函式會將訊息傳播至視窗的父代。 訊息不應該有內部轉送,因為 DefWindowProc 將它傳播至父鏈結,直到找到處理訊息的窗口為止。

視窗會透過其 WindowProc 函式接收此訊息。

#define WM_MOUSEWHEEL                   0x020A

參數

wParam

高序字表示方向盤旋轉的距離,以 WHEEL_DELTA的倍數或除數表示,也就是 120。 正值表示方向盤向前旋轉,遠離使用者;負值表示方向盤向後旋轉至使用者。

低序字表示各種虛擬密鑰是否已關閉。 此參數可以是下列其中一或多個值。

價值 意義
MK_CONTROL
0x0008
CTRL 鍵已關閉。
MK_LBUTTON
0x0001
滑鼠左鍵已關閉。
MK_MBUTTON
0x0010
滑鼠中間按鈕已關閉。
MK_RBUTTON
0x0002
滑鼠右鍵已關閉。
MK_SHIFT
0x0004
SHIFT 鍵已關閉。
MK_XBUTTON1
0x0020
XBUTTON1已關閉。
MK_XBUTTON2
0x0040
XBUTTON2已關閉。

lParam

低序字會指定指標的 X 座標,相對於螢幕左上角。

高序字會指定指標的 Y 座標,相對於螢幕左上角。

傳回值

如果應用程式處理此訊息,它應該會傳回零。

言論

使用下列程式代碼來取得 wParam 參數 中的資訊:

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

使用下列程式代碼來取得水平和垂直位置:

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

如上所述,x 座標位於傳回值的低序 ;Y 座標採用高階 (兩者都代表 帶正負號 值,因為它們可以在具有多個監視器的系統上接受負值)。 如果傳回值指派給變數,您可以使用 MAKEPOINTS 巨集,從傳回值取得 POINTS 結構。 您也可以使用 GET_X_LPARAMGET_Y_LPARAM 巨集來擷取 x 或 y 座標。

重要

請勿使用 LOWORDHIWORD 巨集來擷取游標位置的 x 和 y 坐標,因為這些巨集會在具有多個監視器的系統上傳回不正確的結果。 具有多個監視器的系統可以有負數 x 和 Y 座標,LOWORDHIWORD 將座標視為未帶正負號的數量。

方向盤旋轉將是 WHEEL_DELTA的倍數,其設定為120。 這是要採取的動作閾值,而且每個差異應該發生一個此類動作(例如卷動一個遞增)。

差異設定為 120,以允許Microsoft或其他廠商建置更精細的解析度方向盤(無針腳輪自由旋轉輪),以每個輪替傳送更多訊息,但每個訊息中的值較小。 若要使用這項功能,您可以新增傳入的差異值,直到達到 WHEEL_DELTA 為止(因此對於差異輪替,您會得到相同的回應),或捲動部分行以回應更頻繁的訊息。 您也可以選擇捲動粒度,並累積差異,直到到達為止。

請注意,MSH_MOUSEWHEEL沒有 fwKeys。 否則,參數與 WM_MOUSEWHEEL完全相同。

應用程式會由應用程式將 MSH_MOUSEWHEEL 轉送至任何內嵌物件或控件。 應用程式必須傳送訊息給使用中的內嵌 OLE 應用程式。 應用程式選擇性地將它傳送至具有焦點的已啟用滾輪控件。 如果應用程式確實將訊息傳送至控件,它可以檢查傳回值,以查看訊息是否已處理。 如果控件處理訊息,則需要控件傳回 TRUE 的值

要求

要求 價值
最低支援的用戶端
Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
頁眉
Winuser.h (包括 Windowsx.h)

另請參閱

參考

GET_KEYSTATE_WPARAM

GET_X_LPARAM

GET_Y_LPARAM

GET_WHEEL_DELTA_WPARAM

HIWORD

LOWORD

mouse_event

概念

滑鼠輸入

其他資源

GetSystemMetrics

MAKEPOINTS

SystemParametersInfo