x + 22 * cxCaps, y, sysmetrics[i].szDesc, lstrlen (sysmetrics[i].szDesc)) ; SetTextAlign (hdc, TA_RIGHT | TA_TOP) ; TextOut ( hdc, x + 22 * cxCaps + 40 * cxChar, y, szBuffer, wsprintf (szBuffer, TEXT ("%5d"), GetSystemMetrics (sysmetrics[i].iIndex))) ; SetTextAlign (hdc, TA_LEFT | TA_TOP) ; }
EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
转动滑轮会导致Windows在有输入焦点的视窗(不是滑鼠游标下面的视窗)产生WM_MOUSEWHEEL讯息。与平常一样,lParam将获得滑鼠的位置,当然座标是相对於萤幕左上角的,而不是显示区域的。另外,wParam的低字组包含一系列的旗标,用於表示滑鼠按键、Shift与Ctrl键的状态。
新的资讯保存在wParam的高字组。其中有一个「delta」值,该值目前可以是120或-120,这取决於滑轮的向前转动(也就是说,向滑鼠的前面,即带有按钮与电缆的一端)还是向後转动。值120或-120表示文件将分别向上或向下卷动三行。这里的构想是,以後版本的滑鼠滑轮能有比现在的滑鼠产生更精确的移动速度资讯,并且用delta值,例如40和-40,来产生WM_MOUSEWHEEL讯息。这些值能使文件只向上或向下卷动一行。
为使程式能在一般化环境执行,SYSMETS将在WM_CREATE和WM_SETTINGCHANGE讯息处理时,以SPI_GETWHEELSCROLLLINES作为参数来呼叫SystemParametersInfo。此值说明WHEEL_DELTA的delta值将滚动多少行,WHEEL_DELTA在WINUSER.H中定义。WHEEL_DELTA等於120,并且,在内定情况下SystemParametersInfo传回3,因此与卷动一行相联系的delta值就是40。SYSMETS |