Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.08;
Скачать: CL | DM;

Вниз

Как   Найти похожие ветки 

 
mike.dld ©   (2002-12-31 14:57) [0]

Хочу реализовать поддержку MouseHover и MouseLeave и KOL-компоненте, но ничего не получается. Скажите, пожалуйста, как это сделать.


 
Gandalf   (2002-12-31 16:33) [1]

Уже все реализованно, только они называются MouseEnter и MouseLeave.

С Новым Годом!


 
mike.dld ©   (2002-12-31 16:45) [2]

Спасибо, но я не про то. Я хочу по-разному его отрисовывать в зависимости от того, над ним указатель или нет. Пробовал в MouseInControl, но чего-то не работает.


 
Gandalf   (2002-12-31 21:15) [3]

Сделай флаг Hover, и при MouseEnter Hover:=True, MouseLeave Hover:=False; Можешь использовать в самой отрисовке WindowFromPoint(Тут позиция мыши), если Handle совпадет, то значит мышь внутри.


 
mike.dld ©   (2003-01-02 15:42) [4]

А, с этим проблем нет. Как сообщить компоненту, что он должен обновиться?


 
Gandalf   (2003-01-02 16:34) [5]


> А, с этим проблем нет. Как сообщить компоненту, что он должен
> обновиться?


Пошли сообщение WM_PAINT, или там скажем InvalidateRect, UpdateWindow или свое пошли WM_PLEASEREPAINT.


 
mike.dld ©   (2003-01-02 19:15) [6]

Слушайте, я не знаю в чём дело, может надо какие-нибудь особые параметры устанавливать для компонента при создании или ещё что-нибудь, но сколько не пробую, Виндовс совсем не хочет передавать моему контролу сообщения типа WM_MOUSEHOVER, WM_MOUSELEAVE, WM_LBUTTONDOWN и WM_LBUTTONUP, хотя с WM_MOUSEMOVE всё в порядке.
Принимаю их в WndProc case"ом:

var d: PMyData;
...
case Msg.message of
...
WM_MOUSEHOVER: begin
d := Pointer(Clt.CustomData);
d.fMouseIn := true;
( WM_PAINT,0,0)
Слушайте, я не знаю в чём дело, может надо какие-нибудь особые параметры устанавливать для компонента при создании или ещё что-нибудь, но сколько не пробую, Виндовс совсем не хочет передавать моему контролу сообщения типа WM_MOUSEHOVER, WM_MOUSELEAVE, WM_LBUTTONDOWN и WM_LBUTTONUP, хотя с WM_MOUSEMOVE всё в порядке.
Принимаю их в WndProc case"ом:

var d: PMyData;
...
case Msg.message of
...
WM_MOUSEHOVER: begin
d := Pointer(Clt.CustomData);
d.fMouseIn := true;
Ctl.Perform(WM_PAINT,0,0);
end;
...
end;


 
Gandalf   (2003-01-02 22:54) [7]


> Слушайте, я не знаю в чём дело, может надо какие-нибудь
> особые параметры устанавливать для компонента при создании
> или ещё что-нибудь, но сколько не пробую, Виндовс совсем
> не хочет передавать моему контролу сообщения типа WM_MOUSEHOVER,
> WM_MOUSELEAVE, WM_LBUTTONDOWN и WM_LBUTTONUP, хотя с WM_MOUSEMOVE
> всё в порядке.


Насчет WM_LBUTTONDOWN и WM_LBUTTONUP - незнаю, по твоему коду не понять. А вот насчет Ховера - ты прав, особые, но параметры - а реализация, не хочу вдаваться в детали - к KOL это отношения не имеет, да поздно уже. Посмотри WndProcMouseEnterLeave, почитай TrackMouseEvent и можешь обратиться в WinAPI - без обид!
ЗЫ: В итоге тебе надо TrackMouseEvent вызывать при движении мыши - а она, если так случилось, сгенерит сообщения (Hower, Leave) - по ситуации с момента прошлого вызова функции TrackMouseEvent. Просто так тебе эти сообщения никто не пошлет (разве, что ты сам).



Страницы: 1 вся ветка

Текущий архив: 2003.09.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
3-24327
Xmen
2003-08-18 14:58
2003.09.08
Paradox -> MySQL


1-24462
explorer
2003-08-28 08:54
2003.09.08
Запуск программы с ключем


14-24634
Пробегал тут...
2003-08-21 01:01
2003.09.08
Фильтрованное из humor.filtered


1-24406
Хишник
2003-08-28 11:14
2003.09.08
Breakpoint не работает? (CBuilder)


14-24657
Vlad Oshin
2003-08-20 14:10
2003.09.08
Целоваться на прощание бум?