Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
14-27220
^Sanya
2002-08-14 00:58
2002.09.09
Подскажите пожалуйста...


14-27162
Alx2
2002-08-13 14:17
2002.09.09
Прическа для кода


4-27255
Maksim
2002-07-06 12:28
2002.09.09
Универсальный Thread !!!


3-26917
SerVS
2002-08-11 00:31
2002.09.09
ConnectionString


1-27012
Дмитрий Баранов
2002-08-29 19:23
2002.09.09
Получение переменных окружения в СПИСОК





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский