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

Вниз

иконка в SysTray.. реакция на события / подсказка в стиле WinXP   Найти похожие ветки 

 
Zakus ©   (2005-04-18 08:12) [0]

ну вот почитали кучу умных книжек...

ну и вот, как в книгах писали - создал я структуру TNotifyIconData, заполнил...
через Shell_NotifyIcon всё прекрасно работает - добавляю иконку в трей, удаляю, изменяю параметры... всё чудесно жизнь прекрасна =)

но тут возникают проблемы и вопросы:
1. Как сделать чтоб программа реагировала на клики по иконке?
Вроде в структуре типа TNotifyIconData мы задавали какой то параметр uCallbackMessage, и вроде система должна посылать меседжы нашей програме... собственно вопрос первый - как отлавливать эти меседжи?
2.На скока я знаю в WinXP появились такие стильные всплывающие подсказки у иконок в трее, буржуи их называют - balloon"ы =)
...недавно читал я где то  что они так жы как и обычный hint задаються в структуре TNotifyIconData при помощи szInfo,  uTimeout, uVersion, szInfoTitle - но таких параметров у структуры TNotifyIconData в 7ом делфи нету 8-/
Что делать? Переходить на С++ =) ? или искать Delphi2005? =)
Или мож что попроще подскажите?

p.s.
Гдеб то взять Win32 SDK хелп, токой как с делфи идёт, тока поновее..


 
Fay ©   (2005-04-18 08:59) [1]

MSDN


 
alpet ©   (2005-04-18 12:36) [2]

Поищи лучше в сети компонент TTrayIcon. Для простых задач его должно хватить.


 
Чапаев ©   (2005-04-18 12:45) [3]

> собственно вопрос первый - как отлавливать эти меседжи?
Перекрывай TForm.WndProc. Делай что-то вроде if Msg.Message=MyCoolMessage then ... else Result:=inherited;

Можно и проще сделать:
const
 MyCoolMessage=WM_USER+1234;
type
 TForm1=...
   ...
   procedure MyHandler(var Msg:TНеПомнюЧто);message MyCoolMessage;
 end;
Но это не есть правильно...

ЗЫ. А насчёт BaloonTips сам хотел бы узнать побольше.


 
Чапаев ©   (2005-04-18 12:45) [4]

> собственно вопрос первый - как отлавливать эти меседжи?
Перекрывай TForm.WndProc. Делай что-то вроде if Msg.Message=MyCoolMessage then ... else Result:=inherited;

Можно и проще сделать:
const
 MyCoolMessage=WM_USER+1234;
type
 TForm1=...
   ...
   procedure MyHandler(var Msg:TНеПомнюЧто);message MyCoolMessage;
 end;
Но это не есть правильно...

ЗЫ. А насчёт BaloonTips сам хотел бы узнать побольше.


 
Zakus ©   (2005-04-19 08:46) [5]

to Чапаев
вам спасибо... буду пробывать

to alpet
так не интересно, хочеться самому знать как что работает, а не чужими компонентами пользоваться


 
Gero ©   (2005-04-19 08:58) [6]

const
TOOLTIPS_CLASS = "tooltips_class32";
TTS_ALWAYSTIP = $01;
TTS_NOPREFIX = $02;
TTS_BALLOON = $40;
TTF_SUBCLASS = $0010;
TTF_TRANSPARENT = $0100;
TTF_CENTERTIP = $0002;
TTM_ADDTOOL = $0400 + 50;
TTM_SETTITLE = (WM_USER + 32);
ICC_WIN95_CLASSES = $000000FF;
type
TOOLINFO = packed record
  cbSize: Integer;
  uFlags: Integer;
  hwnd: THandle;
  uId: Integer;
  rect: TRect;
  hinst: THandle;
  lpszText: PWideChar;
  lParam: Integer;
end;

var
hWndTip: THandle;
ti: TOOLINFO;
hWnd: THandle;
begin
hWnd := Control.Handle;
hWndTip := CreateWindow(TOOLTIPS_CLASS, nil,
                        WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP, 0, 0, 0, 0, hWnd, 0, HInstance, nil);
if hWndTip <> 0 then begin
  SetWindowPos(hWndTip, HWND_TOPMOST, 0, 0, 0, 0,
               SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
  ti.cbSize := SizeOf(ti);
  ti.uFlags := TTF_CENTERTIP or TTF_TRANSPARENT or TTF_SUBCLASS;
  ti.hwnd := hWnd;
  ti.lpszText := Text;
  Windows.GetClientRect(hWnd, ti.rect);
  SendMessage(hWndTip, TTM_SETTIPBKCOLOR, BackCL, 0);
  SendMessage(hWndTip, TTM_SETTIPTEXTCOLOR, TextCL, 0);
  SendMessage(hWndTip, TTM_ADDTOOL, 1, Integer(@ti));
  SendMessage(hWndTip, TTM_SETTITLE, 2, Integer(Title));
end;
end;


(c) clickmaker


 
rem b   (2005-04-19 18:53) [7]

http://www.delphikingdom.info/asp/answer.asp?IDAnswer=29588


 
Eraser ©   (2005-04-19 21:21) [8]

Zakus ©

Зачем себе парить мозги?!
Первый (лучший) вариант- установить JEDI VCL.
Второй вариант http://koroan.by.ru/delphi/components/COOLTRAY.ZIP



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

Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.046 c
1-1117054790
viny
2005-05-26 00:59
2005.06.14
Как заставить Delphi правильно считать?


1-1116935843
Karlson
2005-05-24 15:57
2005.06.14
Формат отображения даты в DateTimePicker


1-1117086896
Артем К.
2005-05-26 09:54
2005.06.14
Удаление компонента в Runtime при нажатии на кнопку Delete


8-1109407903
StarLit
2005-02-26 11:51
2005.06.14
Есть отсканиное изображение земельного участака со


14-1116960689
Eraser
2005-05-24 22:51
2005.06.14
Уроки информатики в вашей школе





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