//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ille = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Podstawowe ustawienia
tray.cbSize = sizeof(TNotifyIconData);
tray.hWnd = AllocateHWnd(OnMessage);
tray.uID = (UINT)this;
tray.uFlags = NIF_ICON | NIF_MESSAGE;
// Definiowanie ikony (tu: będzie to ikona formatki):
tray.hIcon = Form1->Icon->Handle;
// Definiowanie hinta
AnsiString hint = "Jakieś info";
StrPLCopy(tray.szTip, hint.c_str(), sizeof(tray.szTip) - 1);
tray.uFlags = tray.uFlags | NIF_TIP;
// Definiowanie funkcji obsługi komunikatów
tray.uCallbackMessage = WM_SYSTEM_TRAY_NOTIFY;
// Pokazywanie ikony
Shell_NotifyIcon(NIM_ADD, &tray);
// Ukrywanie formatki
Form1->Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OnMessage(TMessage &Message)
{
switch(Message.Msg)
{
case WM_SYSTEM_TRAY_NOTIFY:
switch(Message.LParam)
{
// Dwukrotne kliknięcie lewym klawiszem
case WM_LBUTTONDBLCLK:
// Pokazywanie Formatki
Form1->Visible = true;
// Usuwanie ikonki z paska
Shell_NotifyIcon(NIM_DELETE, &tray);
break;
// Kliknięcie prawym klawiszem myszy
case WM_RBUTTONDOWN:
// Pokazywanie menu kontekstowego
POINT pozycja;
GetCursorPos(&pozycja);
PopupMenu1->Popup(pozycja.x, pozycja.y);
break;
}
break;
}
TForm::Dispatch(&Message);
}
//-----------------------------------------------------------------------------
void __fastcall TForm1::poka1Click(TObject *Sender)
{
Form1->Show();
Shell_NotifyIcon(NIM_DELETE, &tray);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Zamknij1Click(TObject *Sender)
{
Shell_NotifyIcon(NIM_DELETE, &tray);
Application->Terminate();
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Shell_NotifyIcon(NIM_DELETE, &tray);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
CanClose = false;
// Podstawowe ustawienia
tray.cbSize = sizeof(TNotifyIconData);
tray.hWnd = AllocateHWnd(OnMessage);
tray.uID = (UINT)this;
tray.uFlags = NIF_ICON | NIF_MESSAGE;
// Definiowanie ikony (tu: będzie to ikona formatki):
tray.hIcon = Form1->Icon->Handle;
// Definiowanie hinta
AnsiString hint = "Test DVL";
StrPLCopy(tray.szTip, hint.c_str(), sizeof(tray.szTip) - 1);
tray.uFlags = tray.uFlags | NIF_TIP;
// Definiowanie funkcji obsługi komunikatów
tray.uCallbackMessage = WM_SYSTEM_TRAY_NOTIFY;
// Pokazywanie ikony
Shell_NotifyIcon(NIM_ADD, &tray);
// Ukrywanie formatki
Form1->Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IconADD1Click(TObject *Sender)
{
// Podstawowe ustawienia
tray.cbSize = sizeof(TNotifyIconData);
tray.hWnd = AllocateHWnd(OnMessage);
tray.uID = (UINT)this;
tray.uFlags = NIF_ICON | NIF_MESSAGE;
// Definiowanie ikony (tu: będzie to ikona formatki):
tray.hIcon = Form1->Icon->Handle;
// Definiowanie hinta
AnsiString hint = "Test DVL";
StrPLCopy(tray.szTip, hint.c_str(), sizeof(tray.szTip) - 1);
tray.uFlags = tray.uFlags | NIF_TIP;
// Definiowanie funkcji obsługi komunikatów
tray.uCallbackMessage = WM_SYSTEM_TRAY_NOTIFY;
// Pokazywanie ikony
Shell_NotifyIcon(NIM_ADD, &tray);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
// Podstawowe ustawienia
tray.cbSize = sizeof(TNotifyIconData);
tray.hWnd = AllocateHWnd(OnMessage);
tray.uID = (UINT)this;
tray.uFlags = NIF_ICON | NIF_MESSAGE;
// Definiowanie ikony (tu: będzie to ikona formatki):
tray.hIcon = Form1->Icon->Handle;
// Definiowanie hinta
AnsiString hint = "Test DVL";
StrPLCopy(tray.szTip, hint.c_str(), sizeof(tray.szTip) - 1);
tray.uFlags = tray.uFlags | NIF_TIP;
// Definiowanie funkcji obsługi komunikatów
tray.uCallbackMessage = WM_SYSTEM_TRAY_NOTIFY;
// Pokazywanie ikony
Shell_NotifyIcon(NIM_ADD, &tray);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IconADD21Click(TObject *Sender)
{
Form2->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Start(int aa)
{
for(int i=1; i<=aa; ++i)
{
// Podstawowe ustawienia
tray.cbSize = sizeof(TNotifyIconData);
tray.hWnd = AllocateHWnd(OnMessage);
tray.uID = (UINT)this;
tray.uFlags = NIF_ICON | NIF_MESSAGE;
// Definiowanie ikony (tu: będzie to ikona formatki):
tray.hIcon = Form1->Icon->Handle;
// Definiowanie hinta
AnsiString hint = "Test DVL";
StrPLCopy(tray.szTip, hint.c_str(), sizeof(tray.szTip) - 1);
tray.uFlags = tray.uFlags | NIF_TIP;
// Definiowanie funkcji obsługi komunikatów
tray.uCallbackMessage = WM_SYSTEM_TRAY_NOTIFY;
// Pokazywanie ikony
Shell_NotifyIcon(NIM_ADD, &tray);
}
}
//-----------------------------------------------------------------------------