Форум: "WinAPI";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
ВнизКак остановить получение событий колеса мыши? Найти похожие ветки
← →
Mechanic (2006-08-22 12:53) [0]Мой компонент унаследован от TCustomControl. если на нем крутануть колесом мыши, то он последовательно выполнит каждое событие колеса. Мне нужно прервать выполнение событий колеса если колесо уже не крутится.
← →
Сергей М. © (2006-08-22 13:05) [1]А откуда ты узнаешь, крутится оно или не крутится ?
← →
Mechanic (2006-08-22 13:07) [2]Если б знал, сделал бы.
← →
Сергей М. © (2006-08-22 13:09) [3]А зачем их прерывать-то ?
← →
PSPF2003 © (2006-08-22 13:11) [4]))))
← →
Mechanic (2006-08-22 13:11) [5]у меня это действие долго выполняется, и если не прервать последовательность событий колеса, то оно после колеса еще 5 минут выполняться будет.
← →
clickmaker © (2006-08-22 13:13) [6]
> [5] Mechanic (22.08.06 13:11)
попробуй ускорить действие
← →
Mechanic (2006-08-22 13:15) [7]действие ускорить нельзя
← →
Сергей М. © (2006-08-22 13:17) [8]
> у меня это действие долго выполняется
Ну так используй таймер !
Запускай его при первом событии, при срабатывании таймера выключай его и следом удаляй из очереди сообщений все оставшиеся сообщения WM_MOUSEWHEEL
← →
Mechanic (2006-08-22 13:36) [9]Сергей М.
как работать с очередью сообщений? Если собщение WM_MOUSEWHEEL уже пришло вызвав мою OnMouseWheelUp, я не смогу определить обрабатывать ее или нет. Или я что-то не понял в предложенном вами алгоритме.
← →
Сергей М. © (2006-08-22 13:48) [10]
> как работать с очередью сообщений?
в обработчике OnMouseWheelUp/Down:
MyTimer.Enabled := True;
в обработчике OnTimer:
var Msg: TMsg;
..
MyTimer.Enabled := False;
while PeekMessage(Msg, MyControl.Handle, WM_MOUSEWHEEL, WM_MOUSEWHEEL, PM_REMOVE) do;
← →
Mechanic (2006-08-22 16:10) [11]OnTimer происходит только после всех MouseWheel. Т.е. не прокатывает.
← →
Сергей М. © (2006-08-22 16:24) [12]Тады в обработчике OnMouseWheelUp/Down
var Msg: TMsg;
..
if MyTimer.Enabled then
begin
if PeekMessage(Msg, MyControl.Handle, WM_TIMER, WM_TIMER, PM_REMOVE) do
DispatchMessage(Msg);
end else
MyTimer.Enabled := True;
← →
Mechanic (2006-08-22 16:38) [13]Зачем тут нужен MyTimer? Который ничего не выполняет, кроме как работу флажка.
← →
Сергей М. © (2006-08-22 16:44) [14]
> Mechanic (22.08.06 16:38) [13]
> Который ничего не выполняет, кроме как работу флажка
Чего-чего ? Какого такого "флажка" ?)
← →
Mechanic (2006-08-22 16:49) [15]просмотрел WM_TIMER, WM_TIMER, сорри
← →
Mechanic (2006-08-22 17:03) [16]Отлично! Заработало. Спасибо, Сергей!
← →
GrayFace © (2006-08-25 18:38) [17]Сергей М. © (22.08.06 16:44) [14]
Чего-чего ? Какого такого "флажка" ?)
Переменной типа Boolean.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.048 c