Termometro/traymain.cpp
2021-09-12 22:18:22 +02:00

165 lines
4.7 KiB
C++

//----------------------------------------------------------------------------
//Borland C++Builder
//Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved.
//----------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#include <shellapi.h>
#include <registry.hpp>
#pragma hdrstop
#include "traymain.h"
#include "TPropiedades.h"
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TTrayMainForm *TrayMainForm;
//---------------------------------------------------------------------------
__fastcall TTrayMainForm::TTrayMainForm(TComponent* Owner)
: TForm(Owner)
{
Running = true;
TrayMessage(NIM_ADD);
TrayMessage(NIM_MODIFY);
}
//---------------------------------------------------------------------------
void __fastcall TTrayMainForm::DrawItem(TMessage& Msg)
{
IconDrawItem((LPDRAWITEMSTRUCT)Msg.LParam);
TForm::Dispatch(&Msg);
}
//---------------------------------------------------------------------------
void __fastcall TTrayMainForm::MyNotify(TMessage& Msg)
{
POINT MousePos;
switch(Msg.LParam)
{
case WM_RBUTTONUP:
if ( GetCursorPos(&MousePos) )
{
PopupMenu1->PopupComponent = Propiedades;
SetForegroundWindow(Handle);
PopupMenu1->Popup(MousePos.x, MousePos.y);
PopupMenu1->PopupComponent = 0;
}
else
Show();
break;
case WM_LBUTTONDBLCLK:
Properties1Click(0);
break;
/*
case WM_LBUTTONUP:
Properties1Click(0);
break;
*/
default:
break;
}
TForm::Dispatch(&Msg);
}
//---------------------------------------------------------------------------
void __fastcall TTrayMainForm::FormDestroy(TObject *Sender)
{
TrayMessage(NIM_DELETE);
}
//---------------------------------------------------------------------------
bool __fastcall TTrayMainForm::TrayMessage(DWORD dwMessage)
{
NOTIFYICONDATA tnd;
PSTR pszTip;
pszTip = TipText();
tnd.cbSize = sizeof(NOTIFYICONDATA);
tnd.hWnd = Handle;
tnd.uID = IDC_MYICON;
tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnd.uCallbackMessage = MYWM_NOTIFY;
if (dwMessage == NIM_MODIFY)
{
tnd.hIcon = IconHandle();
if (pszTip)
lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip));
else
tnd.szTip[0] = '\0';
}
else
{
tnd.hIcon = NULL;
tnd.szTip[0] = '\0';
}
return (Shell_NotifyIcon(dwMessage, &tnd));
}
//---------------------------------------------------------------------------
HANDLE __fastcall TTrayMainForm::IconHandle(void)
{
if (Running)
return imagenOn -> Picture->Icon->Handle;
else
return imagenOFF -> Picture->Icon->Handle;
}
//---------------------------------------------------------------------------
void __fastcall TTrayMainForm::ToggleState(void)
{
Running = !Running;
TrayMessage(NIM_MODIFY);
}
//---------------------------------------------------------------------------
PSTR __fastcall TTrayMainForm::TipText(void)
{
if (Running)
return ("Lanzador de RAS's esta Activado.");
else
return ("-- DESACTIVADO --");
}
//---------------------------------------------------------------------------
LRESULT IconDrawItem(LPDRAWITEMSTRUCT lpdi)
{
HICON hIcon;
hIcon = (HICON)LoadImage(g_hinst, MAKEINTRESOURCE(lpdi->CtlID), IMAGE_ICON,
16, 16, 0);
if (!hIcon)
return(FALSE);
DrawIconEx(lpdi->hDC, lpdi->rcItem.left, lpdi->rcItem.top, hIcon,
16, 16, 0, NULL, DI_NORMAL);
return(TRUE);
}
//---------------------------------------------------------------------------
void __fastcall TTrayMainForm::Properties1Click(TObject *Sender)
{
// Show();
Propiedades -> Visible = !(Propiedades->Visible);
}
//---------------------------------------------------------------------------
void __fastcall TTrayMainForm::ToggleState1Click(TObject *Sender)
{
ToggleState();
}
//---------------------------------------------------------------------------
void __fastcall TTrayMainForm::Shutdown1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TTrayMainForm::BSalirClick(TObject *Sender)
{
Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall TTrayMainForm::FormCreate(TObject *Sender)
{
Visible = false;
}
//---------------------------------------------------------------------------