Работа с мышкой
Страница 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);
 
« Предыдущая статья   Следующая статья »