Большой Воронежский Форум
» Программирование>Мышиное колесо.
Alkonaft 18:32 06.10.2005
Здравствуйте!!!
Возникла такая проблемулина.
Необходимо сочинить прогу которая должна назничить выполнение некоторого действия Скроллеру. Тонкость еще в том, что функции моей проги должны выполняться в момент, когда пользователь работает с другой программой.
Я сочинил такую DLLку.

library Lib;
uses
SysUtils,windows, messages,
Classes;
{$R *.res}
var
// дескриптор ловушки
HMouse: hHook = 0;

//ловушка
function Skroll(code: integer; wParam: integer;
lParam: integer): integer stdcall;
begin
if wParam=WM_MOUSEWHEEL then beep(300,300);
Result := CallNextHookEx(HMouse, code, wParam, lParam);
end;

procedure StartMouse;
//Установка ловушки
begin
if HMouse = 0 then
HMouse := SetWindowsHookEx(WH_MOUSE, @Skroll, hInstance, 0);
if HMouse = 0 then
MessageBox(0, 'Ловушка не установилась!', 'Ошибка', mb_Ok);

end;
exports Skroll;
exports StartMouse;

begin
end.


Засада в том, что данная ловушка замечтательно ловит вращение скроллера, но мне еще необходимо знать в какую сторону он вертится.

Подскажите как отловить направление вращения???? [Ответ]
aerin 17:43 07.10.2005
MSDN:
wParam
The high-order word indicates the distance the wheel is rotated, expressed in multiples or divisions of WHEEL_DELTA, which is 120. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user. [Ответ]
Вверх