Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];

Вниз

как свернуть программу в Трэй   Найти похожие ветки 

 
zaqqaz ©   (2006-10-03 13:00) [0]

в общем сабж с комментариями и примером ;-)


 
Ketmar ©   (2006-10-03 13:02) [1]

а-а-а-а! дождался!

но пока не спросишь "по форме" -- не скажем. надо так: "как запуздырить иконку туда, где часики?" %-)


 
Джо ©   (2006-10-03 13:02) [2]

Что-ж, держи.

{
 Иконка "туда где часики". Кастрированный, но рабочий класс.
 Событий не имеет, все сообщения отправляются окну,
 указанному в конструкторе.
 Автор: Joe (sergeybox@gmail.com)
}

{ TODO -oJoe : Создание собственного невидимого окна
для отлова сообщений и возбуждения событий }

unit TrayIcn;

interface
uses Windows, ShellAPI;

type

 TArray127 = array [0..127] of AnsiChar;

 _NOTIFYICONDATA = record
   cbSize: DWORD;
   Wnd: HWND;
   uID: UINT;
   uFlags: UINT;
   uCallbackMessage: UINT;
   hIcon: HICON;
   szTip: TArray127;
   dwState: DWORD;
   dwStateMask: DWORD;
   szInfo: array [0..255] of AnsiChar;
   uTimeout: UINT;
   szInfoTitle: array [0..63] of AnsiChar;
   dwInfoFlags: DWORD;
 end;

 // Сделал в виде интерфейса, чтобы не возиться
 // с ручным освобождением экземпляра объекта

 ITrayIcon = interface
   ["{3BEFB632-BA22-44C2-BB9E-EE0F0044C6FE}"]
   function GetHint: TArray127;
   procedure SetHint(const Value: TArray127);
   function GetIcon: Integer;
   procedure SetIcon(const Value: Integer);

   procedure Show;
   procedure Hide;
   property Icon: Integer read GetIcon write SetIcon;
   property Hint: TArray127 read GetHint write SetHint;
 end;

// Создает экземпляр интерфейса
function CreateTrayIcon (AWindowHandle: THandle; MessageID,
 IconID: Integer): ITrayIcon;

implementation

type

 TTrayIcon = class (TInterfacedObject, ITrayIcon)
 private
   FNotifyIconData: _NOTIFYICONDATA;
   function GetHint: TArray127;
   procedure SetHint(const Value: TArray127);
   function GetIcon: Integer;
   procedure SetIcon(const Value: Integer);
   procedure Invalidate;
 public
   constructor Create (AWindowHandle: THandle; MessageID,
     IconID: Integer);
   destructor Destroy; override;
   procedure Show;
   procedure Hide;
   property Icon: Integer read GetIcon write SetIcon;
   property Hint: TArray127 read GetHint write SetHint;
 end;

function CreateTrayIcon (AWindowHandle: THandle; MessageID,
 IconID: Integer): ITrayIcon;
begin
 Result := TTrayIcon.Create(AWindowHandle, MessageID, IconID);
end;

{ TTrayIcon }

constructor TTrayIcon.Create(AWindowHandle: THandle; MessageID, IconID: Integer);
begin
 FNotifyIconData.cbSize := SizeOf(_NOTIFYICONDATA);
 FNotifyIconData.Wnd := AWindowHandle;
 FNotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
 FNotifyIconData.uID := IconID;
 FNotifyIconData.uCallbackMessage := MessageID;
 FNotifyIconData.hIcon:= 0;
 FNotifyIconData.szTip := #0;
end;

destructor TTrayIcon.Destroy;
begin
 Hide;
 inherited;
end;

function TTrayIcon.GetHint: TArray127;
begin
 Result := FNotifyIconData.szTip
end;

function TTrayIcon.GetIcon: Integer;
begin
 Result := FNotifyIconData.hIcon  
end;

procedure TTrayIcon.Hide;
begin
 Shell_NotifyIcon(NIM_DELETE,@FNotifyIconData);
end;

procedure TTrayIcon.Invalidate;
begin
 Shell_NotifyIcon(NIM_MODIFY,@FNotifyIconData);
end;

procedure TTrayIcon.SetHint(const Value: TArray127);
begin
 FNotifyIconData.szTip := Value;
 Invalidate;
end;

procedure TTrayIcon.SetIcon(const Value: Integer);
begin
 FNotifyIconData.hIcon := Value;
 Invalidate;
end;

procedure TTrayIcon.Show;
begin
 Shell_NotifyIcon(NIM_ADD,@FNotifyIconData);
end;

end.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.041 c
2-1159787370
Димыч
2006-10-02 15:09
2006.10.22
передача нажатия TAB в другую прогу


3-1156426216
Сергей А.
2006-08-24 17:30
2006.10.22
Длина поля в таблице MySQL


15-1159535108
DmitriyG
2006-09-29 17:05
2006.10.22
TurboPower


2-1160127277
Itonix
2006-10-06 13:34
2006.10.22
Приложение не реагирует


2-1159875670
Samson
2006-10-03 15:41
2006.10.22
медиасервак.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский