Обнаружение мыши с колесиком
Чтобы выяснить, присоединена ли мышь с колесиком, вызовите 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; |