Обнаружение мыши с колесиком
Чтобы выяснить, присоединена ли мышь с колесиком, вызовите GetSystemMetrics (SM_MOUSEWHEELPRESENT). Возвращаемое значение ИСТИНА (TRUE) указывает, что мышь присоединена.
Пример ниже взят из оконной процедуры для многострочного поля редактирования текста:
Демонстрационный пример
BOOL ScrollLines(
PWNDDATA pwndData, // прокрутка для просмотра указанного окна
int cLinesToScroll); // число раз
short gcWheelDelta; // градация (дельта)колесика при прокручивании
PWNDDATA pWndData; // указатель на структуру содержащую
// информацию об окне
UINT gucWheelScrollLines=0;// число прокрученных строк number of lines to scroll
// при вращении колесика
gucWheelScrollLines=
SystemParametersInfo(SPI_GETWHEELSCROLLLINES,
0,
pulScrollLines,
0);
case WM_MOUSEWHEEL:
/*
* Не обрабатываем масштабирование и данные о масштабировании.
*/
if (wParam & (MK_SHIFT | MK_CONTROL)) {
goto PassToDefaultWindowProc;
}
gcWheelDelta -= (short) HIWORD(wParam);
if (abs(gcWheelDelta) >=
WHEEL_DELTA && gucWheelScrollLines > 0) {
int cLineScroll;
/*
* Ограничиваем прокручивание одного (1) WHEEL_DELTA,
* прокручиванием одной (1) страницы.
*/
cLineScroll = (int) min(
(UINT) pWndData->ichLinesOnScreen - 1,
gucWheelScrollLines);
if (cLineScroll == 0) {
cLineScroll++;
}
cLineScroll *= (gcWheelDelta / WHEEL_DELTA);
assert(cLineScroll != 0);
gcWheelDelta = gcWheelDelta % WHEEL_DELTA;
return ScrollLines(pWndData, cLineScroll);
}
break;
|