Форум: "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.042 c