![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запуздыривание в трей.
vain © (2006-12-26 17:30:00)
type
TSystemTrayIcon= class
private
placed: boolean;//true, если запуздырено
NID: _NOTIFYICONDATA;
FIcon: TIcon;
FTip: string;
ID: integer;
procedure SetIcon(NewIcon: TIcon);
procedure SetTip(NewTip: string);
procedure Refresh;
public
constructor Create(hOwner: THandle);
procedure AddTrayIcon(Icon: TIcon= nil; Tip: string='');
procedure DeleteTrayIcon;
destructor Destroy;
property Icon: TIcon read FIcon write SetIcon;
property Tip: string read FTip write SetTip;
end;
implementation
procedure TSystemTrayIcon.Refresh;
begin
ShowMessage(BoolToStr(Shell_NotifyIcon(NIM_MODIFY, @NID)));
end;
procedure TSystemTrayIcon.SetTip(NewTip: string);
begin
Self.FTip:= NewTip;
If NewTip<>''
Then begin
FillChar(NID.szTip, SizeOf(NID.szTip), 0);
lstrcpyn(NID.szTip, PChar(Self.FTip), SizeOf(nid.szTip));
NID.uFlags:= NID.uFlags or NIF_TIP;
end;
If placed
Then Self.Refresh;
end;
При изменении tip'a, ShowMessage показывает false. Как быть? Подскажете?
vain (2006-12-26 17:43:00) [1]
> if not Shell_NotifyIcon (...) then
> RaiseLastOSError;
> и все узнаешь
A call to an OS function failed.
И?
> Джо © (26.12.06 17:34) [2]
>
> Кстати, кто будет инициализировать поле cbSize правильным
> значением?
Поправил - на исход не влияет.
Джо (2006-12-26 17:34:00) [2]Кстати, кто будет инициализировать поле cbSize правильным значением?
Джо (2006-12-26 17:32:00) [3]> Как быть?
if not Shell_NotifyIcon (...) then
RaiseLastOSError;
и все узнаешь.