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

Вниз

Hint в System Tray   Найти похожие ветки 

 
Kr_Alex ©   (2002-06-22 13:26) [0]

Как узнать, что юзер задержал мышку над моей иконкой в System Tray (в смысле пора hint показать)? Но показать не hint а окно программы.


 
dennisius   (2002-06-22 22:51) [1]


> Kr_Alex

Одно из полей структуры TNotifyIconData : uCallBackMessage
то бишь это идентификатор события от иконки
Во время создания :uCallBackMessage:=CallBackIconMessage;

До этого в констант сразу после юзезь :
CallBackIconMessage=wm_user;

Объявление процедуры обработчика
procedure IconOnClick(var Message: TMessage); message CallBackIconMessage;

Сама процедура ,советую тебе показывать окно при двойном щелчке
procedure TForm1.IconOnClick(var Message: TMessage);
begin
if Message.LParam=WM_LBUTTONDBLCLK then
Form1.Visible:=true;
end;
Вот и всё пашет подо всё .


 
Diamond Cat ©   (2002-06-23 01:01) [2]

все верно только вопрос немного не про то, для определения что мышь просто находиться над твоей иконкой надо ловить сообщение wm_mousemove


 
Kr_Alex ©   (2002-06-23 15:19) [3]


> dennisius

Спасибо!


 
Kr_Alex ©   (2002-06-23 17:03) [4]

И ещё один вопросик: какие сообщения нужно ловить, чтобы узнать что мышка вошла и вышла из области иконки? (помоему что-то типа WM_MOUSEENTER И WM_MOUSEEXIT)


 
Almaz ©   (2002-06-23 23:24) [5]


> Kr_Alex © (23.06.02 17:03)
> И ещё один вопросик: какие сообщения нужно ловить, чтобы
> узнать что мышка вошла и вышла из области иконки? (помоему
> что-то типа WM_MOUSEENTER И WM_MOUSEEXIT)

Таких сообщений не существует. Есть только WM_MOUSEMOVE, которое посылается при движении курсора мышки над иконкой.

Удачи.


 
Kr_Alex ©   (2002-06-24 23:01) [6]

Так что, нельзя узнать когда мышка вошла в область иконки? А как это Explorer делает?
Он ведь узнаёт об этом и показывает hint.


 
Almaz ©   (2002-06-25 01:54) [7]


> Kr_Alex © (24.06.02 23:01)
> Так что, нельзя узнать когда мышка вошла в область иконки?
> А как это Explorer делает?
> Он ведь узнаёт об этом и показывает hint.

Как это делает Explorer один лишь Microsoft знает :))
А сделать это самому можно так:
1. При получении вашим окном сообщения WM_MOUSEMOVE, вы вызываете функцию SetCapture (при этом все "мышиные" сообщения будут перенаправляться вашему окну) и запускаете таймер.
2. После этого обрабатываете все сообщения WM_MOUSEMOVE, получаемые вашим окном при этом определяете, находится ли курсор над вашей иконкой или нет (для простоты можно определять не отошла ли мышка далее 8 пикселей от первоначального состояния). Если мышка отошла от вашей иконки, то вызывайте ReleaseCapture и сбрасываете таймер.
3. Если таймер сработал - показываете Hint, сбрасываете таймер и вызываете ReleaseCapture.

Удачи.


 
dennisius   (2002-06-27 14:27) [8]

Kr_Alex
А стоет ли ето делать пользователь забодается
1000 раз на день случайно попадаю на эту иконку и ты сам её проклинать будеш но если хочеш :
if Message.LParam=WM_WM_MOUSEMOVE then
Form1.Visible:=true;


 
Ricks ©   (2002-06-28 01:22) [9]

насчет WM_MOUSEENTER и др.
На самом деле оно называется CM_MOUSEENTER и CM_MOUSELEAVE, если конечно это поможет ;-)



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
1-27000
xyz
2002-08-22 22:07
2002.09.09
User.dat system.dat... как самому такую штуку сделать?


1-27054
olban
2002-08-27 11:10
2002.09.09
Постоянный размер шрифта


14-27210
TCrash
2002-08-14 15:27
2002.09.09
Извините за оффтопик, но очень нужно


3-26878
DeepProg
2002-08-18 20:23
2002.09.09
Doule&FieldName.AsFloat


1-26988
Still Swamp
2002-08-29 15:42
2002.09.09
TImageList.Add