Извлечение числа прокручиваемых строк колесиком мыши
Нижеследующий код дает возможность приложению извлечь данные о числе прокручиваемых строк. Это присуще только для тех операционных систем, которые поддерживают колесико, для таких как 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);
}
|