Обнаружение мыши с колесиком


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

Назад в оглавление
На главную страницу

Hosted by uCoz