Страница 6 из 6 Получаем количество строк, проскроллированных колесом мышки Следующий пример, позволяет узнать количество проскроллированных строк. Для тех операционных систем, которые изначально поддерживают колёсико мышки, такие как Microsoft Windows NT® 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(osversion)); osversion.dwOSVersionInfoSize =sizeof(osversion); 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); } |