Главная страница
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.01 c
14-27227
dmtr
2002-08-14 17:48
2002.09.09
Кто работает с сетями?


1-27023
RangerBetta
2002-08-30 09:33
2002.09.09
Как синхронизировать ChekBox во фрейме


14-27233
AL2002
2002-08-13 00:50
2002.09.09
Задаю вопрос и иду спать


3-26902
id_privin
2002-08-19 15:56
2002.09.09
Програмное создание числовых полей в DBF через ADO


14-27218
Mystic
2002-08-13 23:12
2002.09.09
Мастера комментируют код