Главная страница
    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.46 MB
Время: 0.006 c
14-27226
Дремучий
2002-08-15 10:24
2002.09.09
Ласточка №2


1-27067
Korona
2002-08-27 21:13
2002.09.09
Как разместить Item справа на MainMenu?


1-27080
FeatheryMan
2002-08-28 15:18
2002.09.09
Как открыть очень большой файл в RichEdit в Win2000?


1-27017
nic418
2002-08-30 05:01
2002.09.09
---|Ветка была без названия|---


4-27258
Anton_
2002-06-28 10:07
2002.09.09
handle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский