Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.03.2012, 00:19
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию как сменить хинт иконки в трее?

создаю иконку в трее своему приложению так

Код:
const
WM_NOTIFYTRAYICON = WM_USER + 1;
var
tray: TNotifyIconData;
  TrayIcon: TIcon
....
На событии создания главной формы:
with tray do begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Form1.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_NOTIFYTRAYICON;
hIcon := TrayIcon.Handle;
szTip :='Текст';
end;
Shell_NotifyIcon(NIM_ADD, Addr(tray));

как потом во время работы программы сменить szTip :='Текст'; ?
а то повтором вышеперечисленного кода текст не меняется.остается тот который самый первый был
Ответить с цитированием
  #2  
Старый 17.03.2012, 00:47
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Код:
const
  WM_NOTIFYTRAYICON = WM_USER + 1;

procedure Ic(n: Integer; xTitle: string);
var
  tray: TNotifyIconData;
  TrayIcon: TIcon;
begin
  with tray do
  begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd := Form1.Handle;
    uID := 1;
    uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
    uCallBackMessage := WM_NOTIFYTRAYICON;
    hIcon := TrayIcon.Handle;
    lstrcpy(szTip, PChar(xTitle));
  end;
  case n of
    1: Shell_NotifyIcon(NIM_ADD, @tray);
    2: Shell_NotifyIcon(NIM_DELETE, @tray);
    3: Shell_NotifyIcon(NIM_MODIFY, @tray);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Ic(1, 'Text 1'); //добавляем иконку
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Ic(3, 'New Text'); //модифицируем иконку
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Ic(2, ''); //удаляем иконку
end;
__________________
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра.
Ответить с цитированием
Этот пользователь сказал Спасибо Karsh за это полезное сообщение:
Snake22 (17.03.2012)
  #3  
Старый 17.03.2012, 00:52
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Пример на API:

Код:
//---------------------------------------------------------
//                    MouseEvent
//---------------------------------------------------------

function CallTrackMouseEvent(const Wnd: HWND; const Flags: DWORD): Boolean;
var
  Track : TTrackMouseEvent;
begin
  Track.cbSize      := SizeOf(Track);
  Track.dwFlags     := Flags;
  Track.hwndTrack   := Wnd;
  Track.dwHoverTime := 0;
  Result := TrackMouseEvent(Track);
end;

//---------------------------------------------------------
//                     TaskBar icon
//---------------------------------------------------------

function TaskBarAddIcon(hWindow: THandle; ID: Cardinal; ICON: hIcon;
			CallbackMessage: Cardinal; Tip: PChar): Boolean;
var
  NID: TNotifyIconData;
begin
  FillChar(NID, SizeOf(TNotifyIconData), 0);
  with NID do
  begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd    := hWindow;
    uID    := ID;
    uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    uCallbackMessage := CallbackMessage;
    hIcon  := Icon;
    lstrcpyn(szTip, Tip, SizeOf(szTip));
  end;
  Result := Shell_NotifyIcon(NIM_ADD, @NID);
end;

//---------------------------------------------------------

function TaskBarModifyIcon(hWindow: THandle; ID: Cardinal; Flags: Cardinal;
			  ICON: hIcon; Tip: PChar): Boolean;
var
  NID: TNotifyIconData;
begin
  FillChar(NID, SizeOf(TNotifyIconData), 0);
  with NID do
  begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd    := hWindow;
    uID    := ID;
    uFlags := Flags;
    hIcon  := Icon;
    lstrcpyn(szTip, Tip, SizeOf(szTip));
  end;
  Result := Shell_NotifyIcon(NIM_MODIFY, @NID);
end;

//---------------------------------------------------------

function TaskBarDeleteIcon(hWindow: THandle; ID: Integer): Boolean;
var
  NID: TNotifyIconData;
begin
  FillChar(NID, SizeOf(TNotifyIconData), 0);
  with NID do
  begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd    := hWindow;
    uID    := ID;
  end;
  Result := Shell_NotifyIcon(NIM_DELETE, @NID);
end;

Опоздал
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:41.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025