Работа с мышкой - Получаем количество строк, проскроллированных колесом мышки
ОГЛАВЛЕНИЕ
Страница 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);
}