Форум: "Начинающим";
Текущий архив: 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