Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.023 c
1-1117211366
Shmit
2005-05-27 20:29
2005.06.14
Kak sdelat formu always on a top?


1-1117036352
Masta Hookah
2005-05-25 19:52
2005.06.14
Свойства файлов...


1-1117520936
Гость2
2005-05-31 10:28
2005.06.14
Срочно! Как сделать округление числа типа real до 2-го знака?


1-1117381279
Serg1981
2005-05-29 19:41
2005.06.14
Отдельный hint для каждого элемента ListView


3-1115902646
MakNik
2005-05-12 16:57
2005.06.14
dxDBGrid




   Наверх