Содержание материала

 

Иконка, должна быть предварительно добавлена с темже дескриптором окна и IconID (в данном примере Form1.Handle и 1).

 

Можете попробовать все три типа иконок внутри всплывающей подсказки.

 

P.S. На всякий случай, ниже представлены функции для добавление/удаления иконок в трее:

 

Code:

uses SysUtils, Windows, ShellAPI;

 

{добавление иконки}

 

function DZAddTrayIcon(const Window: HWND; const IconID: Byte; const Icon:

HICON; const Hint: string = ''): Boolean;

var

NID: NotifyIconData;

begin

FillChar(NID, SizeOf(NotifyIconData), 0);

with NID do begin

   cbSize := SizeOf(NotifyIconData);

   Wnd := Window;

   uID := IconID;

   if Hint = '' then begin

     uFlags := NIF_ICON;

   end {if} else begin

     uFlags := NIF_ICON or NIF_TIP;

     StrPCopy(szTip, Hint);

   end {else};

   hIcon := Icon;

end {with};

Result := Shell_NotifyIcon(NIM_ADD, @NID);

end;

 

{добавляет иконку с call-back сообщением}

 

function DZAddTrayIconMsg(const Window: HWND; const IconID: Byte;

const Icon: HICON; const Msg: Cardinal; const Hint: string = ''): Boolean;

var

NID: NotifyIconData;

begin

FillChar(NID, SizeOf(NotifyIconData), 0);

with NID do begin

   cbSize := SizeOf(NotifyIconData);

   Wnd := Window;

   uID := IconID;

   if Hint = '' then begin

     uFlags := NIF_ICON or NIF_MESSAGE;

   end {if} else begin

     uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;

     StrPCopy(szTip, Hint);

   end {else};

   uCallbackMessage := Msg;

   hIcon := Icon;

end {with};

Result := Shell_NotifyIcon(NIM_ADD, @NID);

end;

 

{удаляет иконку}

 

function DZRemoveTrayIcon(const Window: HWND; const IconID: Byte): Boolean;

var

NID: NotifyIconData;

begin

FillChar(NID, SizeOf(NotifyIconData), 0);

with NID do begin

   cbSize := SizeOf(NotifyIconData);

   Wnd := Window;

   uID := IconID;

end {with};

Result := Shell_NotifyIcon(NIM_DELETE, @NID);

end;

 

Несколько заключительных замечаний:

 

Нет необходимости использовать большую структуру NotifyIconData_50 для добавления или удаления иконок, старая добрая структура NotifyIconData прекрасно подойдёт для этого.

Для callback сообщения можно использовать WM_APP + что-нибудь.

Используя различные IconID, легко можно добавить несколько различных иконок из одного родительского окна и работать с ними по их IconID.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить