Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Колесо


Автор: Deux 10.1.2005, 21:17
Как отличить прокрутку колеса мыши вниз и вверх?

Автор: Albinos_x 10.1.2005, 21:31
Лови сообщение WM_MOUSEWHEEL
старшие разряды параметра wParam будут указывать насколько и вкакую сторону поворачивается колёсико. Положительные - вверх, отрицательные - вниз

Автор: Леша 10.1.2005, 22:40
Albinos_x, все верно.

Для справки: работает только начиная с NTшек... Впринципе логично...

Автор: Deux 11.1.2005, 20:30
Функцией hi(wParam)?
У меня всегда в результате 0 получается.

Автор: Snowy 12.1.2005, 10:17
А винда у тебя какая? NT4, 2k, XP,2k3? Или 9x?
Для 9x и NT до 4.0 работает только InteliMouse, причем ловить нужно MSH_MOUSEWHEEL
zDelta = (int) wParam; // куда крутим
xPos = LOWORD(lParam); // координата x
yPos = HIWORD(lParam); // y

Автор: Deux 13.1.2005, 18:59
Винда у меня ХР, но полюбому все параметры всегда одинаковые, всегда.
Может проблема с дровами для мышЫ?

Автор: Albinos_x 13.1.2005, 19:07
Цитата
Может проблема с дровами для мышЫ?

Вряд ли. Приведи код, как ловишь сообщение и обрабатываешь его.

Автор: Snowy 14.1.2005, 09:19
А ты не бери hi
hi возвращает байт. В wParam, например $00780000
И hi и lo здесь будет 0.
Бери wParam целиком. Если он больше нуля, то вверх, меньше, то вниз.
Только вот как определить на сколько строк, я затрудняюсь ответить...

Автор: Deux 14.1.2005, 22:14
Ну в том-то и дело, что и wParam у меня всегда 0.
Добавлено @ 22:22
Вот код:
Код

function WindowProcedure(Window: hWnd; Message, wParam: Word; lParam: longInt): LongInt; stdcall;
var f:text;
begin
...
case Message of
 WM_MOUSEWHEEL:
 begin
 assign(f,'wheel.txt');
 append(f);
 writeln(f,wParam);
 writeln(f,hi(wParam));
 writeln(f);
 close(f);
 end;
...
else Result := DefWindowProc(Window, Message, wParam, lParam);
end;
end;

В файле получается:

0
0

0
0
...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)