Извлечение числа прокручиваемых строк колесиком мыши
Нижеследующий код дает возможность приложению извлечь данные о числе прокручиваемых строк. Это присуще только для тех операционных систем, которые поддерживают колесико, для таких как Windows NT Microsoft ® 4.0 и выше, рекомендуется SystemParametersInfo.
Демонстрационный пример
/* SPI_GETWHEELSCROLLLINES определяется в winuser.h начиная с Windows NT 4.0. Функция SystemParametersInfo была модернизирована для выполнения операций прокручивания строк. */ #ifndef SPI_GETWHEELSCROLLLINES #define SPI_GETWHEELSCROLLLINES 104 #endif #include "zmouse.h" /********************************************************* * Функция : GetNumScrollLines * Назначение : Независимый метод ОС извлекать число * прокручиваемых строк колесиком мыши. * Параметры : не имеется * Возвр.знач. : UINT: Число прокручиваемых строк, где * WHEEL_PAGESCROLL обозначает скроллинг * просмотра страницы за один раз. *********************************************************/ UINT GetNumScrollLines(void) { HWND hdlMsWheel; UINT ucNumLines=3; // 3 является значением по умолчанию OSVERSIONINFO osversion; UINT uiMsh_MsgScrollLines; memset(&osversion, 0, sizeof(OSVERSIONINFO)); osversion.dwOSVersionInfoSize =sizeof(OSVERSIONINFO); GetVersionEx(&osversion); // В Windows 9x & Windows NT 3.51, запрашивает MSWheel // число прокручиваемых строк. В Windows NT 4.0 и позже, // используется функция SystemParametersInfo. if ((osversion.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) || ( (osversion.dwPlatformId == VER_PLATFORM_WIN32_NT) && (osversion.dwMajorVersion < 4) ) ) { hdlMsWheel = FindWindow(MSH_WHEELMODULE_CLASS, MSH_WHEELMODULE_TITLE); if (hdlMsWheel) { uiMsh_MsgScrollLines = RegisterWindowMessage (MSH_SCROLL_LINES); if (uiMsh_MsgScrollLines) ucNumLines = (int)SendMessage(hdlMsWheel, uiMsh_MsgScrollLines, 0, 0); } } else if ( (osversion.dwPlatformId == VER_PLATFORM_WIN32_NT) && (osversion.dwMajorVersion >= 4) ) { SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &ucNumLines, 0); } return(ucNumLines); } |