//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Ficon.cbSize = DWORD(&(PNotifyIconData()->hBalloonIcon));
Ficon.hWnd = AllocateHWnd(WMTrayNotify);
Ficon.uID = 0;
Ficon.uFlags = NIF_ICON | NIF_TIP | NIF_INFO | NIF_MESSAGE;
Ficon.uCallbackMessage = WM_SYSTEM_TRAY_NOTIFY;
Ficon.hIcon = Application->Icon->Handle;
Shell_NotifyIconA(NIM_ADD, &Ficon);
}
/* obsługa komunikatów */
//---------------------------------------------------------------------------
void __fastcall TForm1::WMTrayNotify(TMessage &Msg)
{
switch(Msg.LParam)
{
case WM_RBUTTONUP:
POINT WinPoint;
GetCursorPos(&WinPoint);
//SetForegroundWindow(Handle);
PopupMenu1->Popup(WinPoint.x,WinPoint.y);
PostMessage(Handle, WM_NULL, 0,0);
break;
case WM_LBUTTONDBLCLK:
{
if(winState) Application->Restore();
else Application->Minimize();
Visible = true;
break;
}
case WM_MOUSEMOVE:
{
ShowHint("tytuł komunikatu", 10000);
break;
}
}
}
//---------------------------------------------------------------------------
void TForm1::ShowHint(char *szHint, UINT uTimeout)
{
strcpy( Ficon.szTip, szHint);
Ficon.uTimeout = uTimeout;
Shell_NotifyIconA(NIM_MODIFY, &Ficon);
}
//---------------------------------------------------------------------------
void TForm1::ShowBalloonTip(char *szMsg,
char *szTitle, UINT uTimeout, DWORD dwInfoFlags)
{
strcpy(Ficon.szInfoTitle, szTitle);
strcpy(Ficon.szInfo, szMsg);
Ficon.dwInfoFlags = dwInfoFlags;
Ficon.uTimeout = uTimeout;
Shell_NotifyIconA(NIM_MODIFY, &Ficon);
}
//---------------------------------------------------------------------------
/* zdarzenie przycisku TButton */
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowBalloonTip("Komunikat", "Tutuł", 10000, NIIF_WARNING);
}
//---------------------------------------------------------------------------
/* zdarzenia Formularza */
void __fastcall TForm1::FormShow(TObject *Sender)
{
ShowWindow(Application->Handle, SW_HIDE);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
ShowWindow(Application->Handle, SW_HIDE);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Shell_NotifyIconA(NIM_DELETE, &Ficon);
}
//---------------------------------------------------------------------------
/* Zdarzenia komponentu TApplicationEvents */
void __fastcall TForm1::ApplicationEvents1Minimize(TObject *Sender)
{
winState = true;
ShowWindow(Application->Handle, SW_HIDE);
SetForegroundWindow(Handle);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ApplicationEvents1Restore(TObject *Sender)
{
winState = false;
ShowWindow(Application->Handle, SW_HIDE);
SetForegroundWindow(Handle);
}
//---------------------------------------------------------------------------
/* zdarzenia TPopupMenu - podłączonego pod ikonę SysTray */
void __fastcall TForm1::TestPopupMenu1Click(TObject *Sender)
{
ShowMessage("Kliknięto w menu kontekstowe ikony w zasobniku systemowym");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Zamknij1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------