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

Вниз

иконка в 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.301 c
1-1117282188
Джон
2005-05-28 16:09
2005.06.14
как создать сообщение-ошибка


11-1099069112
Gandalf
2004-10-29 20:58
2005.06.14
KOL FTP


9-1110321672
Куу
2005-03-09 01:41
2005.06.14
ODE-бильярдик Простенький Демка


3-1115872215
Sergun
2005-05-12 08:30
2005.06.14
BLOB в DbGridEh


14-1117104815
YurikGL
2005-05-26 14:53
2005.06.14
Кто встречал проблему с печатью из Acrobat-а