📄 main.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "trayicon"
#pragma comment(lib,"msimg32.lib")
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
//
Timer1->Enabled = false;
WM_TASKBARCREATED = ::RegisterWindowMessage("TaskbarCreated");
Application->OnException = MyException;
m_pOldProc = this->WindowProc;
this->WindowProc = MyWinProc;
this->DoubleBuffered = true;
this->Color = (TColor)RGB(77,93,140);
m_pMainData = new TMainData();
m_pMainData->m_ConfigDay = Now();
m_pDatabase = new TDM(m_pMainData,Owner);
if(m_pDatabase->OpenDatabase() < 0)
{
Application->MessageBoxA("连接数据库出错,请检查数据库文件是否存在!","错误",MB_OK);
Application->Terminate();
return;
}
m_szMainHint = "没有重要信息,如果想要设置重要提示信息,请点击左边的设置按钮.";
Height = m_pMainData->m_iHeight;
m_pLogoImg = new TImage(this);
m_pLastImg = new TImage(this);
m_pMainImg = new TImage(this);
m_pSetupImg = new TImage(this);
m_pMinImg = new TImage(this);
m_pCloseImg = new TImage(this);
m_pMemBitmap = new Graphics::TBitmap();
m_bOverSetup = false;
InitLogo();
InitLast();
InitMainImg();
InitSetupImg();
InitMinImg();
InitCloseImg();
pTimePanel = new TPanel(this);
pTimePanel->Parent = this;
pTimePanel->Top = 0;
pTimePanel->Height = Height - 1;
pTimePanel->Left = m_pSetupImg->Left + m_pSetupImg->Width;
pTimePanel->Width = m_pMainImg->Width - m_pSetupImg->Width;
pTimePanel->Visible = true;
pTimePanel->Color = m_pMainData->m_pBackColor;
pTimePanel->Font->Color = m_pMainData->m_pFontColor;
pTimePanel->Font->Size = 11;
pTimePanel->Alignment = taLeftJustify;
pTimePanel->Tag = uiTIMEPANEL;
pTimePanel->OnMouseMove = ImageMouseMove;
pTimePanel->DoubleBuffered = true;
pTimePanel->OnMouseDown = ImageMouseDown;
pTimePanel->Cursor = crHandPoint;
pTimePanel->ShowHint = true;
pTimePanel->Hint = "点击我,可以修改日期";
pTextPanel = new TPanel(this);
pTextPanel->Parent = this;
pTextPanel->Top = 0;
pTextPanel->Height = Height - 1;
pTextPanel->AutoSize = false;
pTextPanel->Left = m_pLogoImg->Left + m_pLogoImg->Width + m_pMainImg->Width;
pTextPanel->Width = Width - pTextPanel->Left - m_pLastImg->Width;
pTextPanel->Visible = true;
pTextPanel->Color = m_pMainData->m_pBackColor;
pTextPanel->Font->Color = m_pMainData->m_pFontColor;
pTextPanel->Font->Size = 10;
pTextPanel->Tag = uiTEXTPANEL;
pTextPanel->Alignment = taLeftJustify;
pTextPanel->OnMouseMove = ImageMouseMove;
pTextPanel->OnMouseDown = ImageMouseDown;
pTextPanel->Cursor = crSizeAll;
Width = m_pLogoImg->Left + m_pLogoImg->Width + m_pMainImg->Width + pTextPanel->Width + \
m_pLastImg->Width;
Left = (Screen->Width - Width) / 2;
Top = 2;
DrawMemBmp();
m_tmPreTime = time(NULL);
m_iCopyIndex = 0;
switch(m_pMainData->m_iRate)
{
case 0:
{
Timer1->Interval = 500;
break;
}
case 1:
{
Timer1->Interval = 300;
break;
}
case 2:
{
Timer1->Interval = 50;
break;
}
case 3:
{
Timer1->Interval = 1;
break;
}
}
Timer1->Enabled = true;
m_iCopyLeft = g_iLeftPixel;
m_bOverPanel = false;
// SetWindowLong(Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormDestroy(TObject *Sender)
{
Timer1->Enabled = false;
if(m_pMainData)
{
delete m_pMainData;
}
if(m_pMemBitmap)
{
delete m_pMemBitmap;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::InitLogo(void)
{
//TODO: Add your source code here
TRect Rect;
Rect.Left = 0;
Rect.Top = 0;
Rect.Right = 25;
Rect.Bottom = m_pMainData->m_iHeight;
m_pLogoImg->Width = 25;
m_pLogoImg->Height = m_pMainData->m_iHeight;
m_pLogoImg->Canvas->CopyRect(Rect,m_pMainData->m_pMainBmp->Canvas,Rect);
m_pLogoImg->Parent = this;
m_pLogoImg->Left = 0;
m_pLogoImg->Top = 0;
m_pLogoImg->Visible = true;
m_pLogoImg->Tag = uiMOVECMD;
m_pLogoImg->Cursor = crSizeAll;
m_pLogoImg->OnMouseMove = ImageMouseMove;
m_pLogoImg->OnMouseDown = ImageMouseDown;
}
void __fastcall TMainForm::InitLast(void)
{
//TODO: Add your source code here
TRect RectSur;
RectSur.Left = 333;
RectSur.Top = 0;
RectSur.Right = 400;
RectSur.Bottom = m_pMainData->m_iHeight;
TRect RectDst;
RectDst.left = 0;
RectDst.top = 0;
RectDst.Right = RectSur.Right-RectSur.left;
RectDst.Bottom = RectSur.Bottom;
m_pLastImg->Width = RectDst.Right;
m_pLastImg->Height = RectDst.Bottom;
m_pLastImg->Top = 0;
m_pLastImg->Left = Width - RectDst.right;
m_pLastImg->Canvas->CopyRect(RectDst,m_pMainData->m_pMainBmp->Canvas,RectSur);
m_pLastImg->Parent = this;
m_pLastImg->Visible = true;
m_pLastImg->OnMouseMove = ImageMouseMove;
}
void __fastcall TMainForm::InitMainImg(void)
{
//TODO: Add your source code here
TRect RectSur;
RectSur.Left = 26;
RectSur.Top = 0;
RectSur.Right = 55 + 118;
RectSur.Bottom = m_pMainData->m_iHeight;
TRect RectDst;
RectDst.left = 0;
RectDst.top = 0;
RectDst.Right = RectSur.Right-RectSur.left;
RectDst.Bottom = RectSur.Bottom;
m_pMainImg->Width = RectDst.Right;
m_pMainImg->Height = RectDst.Bottom;
m_pMainImg->Top = 0;
m_pMainImg->Left = m_pLogoImg->Left+m_pLogoImg->Width;
m_pMainImg->Canvas->CopyRect(RectDst,m_pMainData->m_pMainBmp->Canvas,RectSur);
m_pMainImg->Parent = this;
m_pMainImg->Visible = true;
m_pMainImg->OnMouseMove = ImageMouseMove;
}
void __fastcall TMainForm::InitSetupImg()
{
//TODO: Add your source code here
LoadSetupImg(m_bOverSetup);
m_pSetupImg->Parent = this;
m_pSetupImg->Cursor = crHandPoint;
m_pSetupImg->Visible = true;
m_pSetupImg->Tag = uiSETUPCMD;
m_pSetupImg->OnMouseMove = ImageMouseMove;
m_pSetupImg->OnClick = MouseClickImg;
}
void __fastcall TMainForm::ImageMouseMove(TObject* Sender, TShiftState Shift, int X, int Y)
{
//TODO: Add your source code here
TImage *pImage;
pImage = dynamic_cast<TImage *>(Sender);
if(pImage != NULL)
{
switch(pImage->Tag)
{
case uiSETUPCMD:
{
if(!m_bOverSetup)
{
m_bOverSetup = true;
m_bOverMin = false;
m_bOverClose = false;
LoadMinImg(false);
LoadCloseImg(false);
LoadSetupImg(true);
}
break;
}
case uiMINCMD:
{
if(!m_bOverMin)
{
m_bOverMin = true;
m_bOverSetup = false;
m_bOverClose = false;
LoadSetupImg(false);
LoadCloseImg(false);
LoadMinImg(true);
}
break;
}
case uiCLOSECMD:
{
if(!m_bOverClose)
{
m_bOverClose = true;
m_bOverSetup = false;
m_bOverMin = false;
LoadSetupImg(false);
LoadMinImg(false);
LoadCloseImg(true);
}
break;
}
default:
{
m_bOverSetup = false;
m_bOverMin = false;
m_bOverClose = false;
LoadSetupImg(false);
LoadMinImg(false);
LoadCloseImg(false);
break;
}
}
}
TPanel *pPanel = dynamic_cast<TPanel *>(Sender);
if(pPanel != NULL)
{
switch(pPanel->Tag)
{
case uiTEXTPANEL:
{
m_bOverSetup = false;
m_bOverMin = false;
m_bOverClose = false;
LoadSetupImg(false);
LoadMinImg(false);
LoadCloseImg(false);
m_bOverPanel = true;
SetCapture(pPanel->Handle);
RECT Rect;
GetWindowRect(pPanel->Handle,&Rect);
POINT Point;
GetCursorPos(&Point);
if(!PtInRect(Rect,Point))
{
m_bOverPanel = false;
ReleaseCapture();
}
break;
}
default:
{
m_bOverSetup = false;
m_bOverMin = false;
m_bOverClose = false;
LoadSetupImg(false);
LoadMinImg(false);
LoadCloseImg(false);
break;
}
}
}
}
void __fastcall TMainForm::LoadSetupImg(bool bMouseOver)
{
//TODO: Add your source code here
TRect RectSur;
if(bMouseOver)
{
RectSur.Left = 23;
RectSur.Top = 0;
RectSur.Right = 23 + 23;
RectSur.Bottom = m_pMainData->m_iHeight;
}
else
{
RectSur.Left = 0;
RectSur.Top = 0;
RectSur.Right = 23 ;
RectSur.Bottom = m_pMainData->m_iHeight;
}
TRect RectDst;
RectDst.left = 0;
RectDst.top = 0;
RectDst.Right = RectSur.Right-RectSur.left;
RectDst.Bottom = RectSur.Bottom;
m_pSetupImg->Width = RectDst.Right;
m_pSetupImg->Height = RectDst.Bottom;
m_pSetupImg->Top = 0;
m_pSetupImg->Left = m_pMainImg->Left + 20;
m_pSetupImg->Canvas->CopyRect(RectDst,m_pMainData->m_pSetupBmp->Canvas,RectSur);
}
void __fastcall TMainForm::InitMinImg(void)
{
//TODO: Add your source code here
LoadMinImg(false);
m_pMinImg->Parent = this;
m_pMinImg->Visible = true;
m_pMinImg->Tag = uiMINCMD;
m_pMinImg->Cursor = crHandPoint;
m_pMinImg->OnMouseMove = ImageMouseMove;
m_pMinImg->OnClick = MouseClickImg;
}
void __fastcall TMainForm::LoadMinImg(bool bMouseOver)
{
//TODO: Add your source code here
TRect RectSur;
if(bMouseOver)
{
RectSur.Left = 19;
RectSur.Top = 0;
RectSur.Right = 19 + 19;
RectSur.Bottom = m_pMainData->m_iHeight;
}
else
{
RectSur.Left = 0;
RectSur.Top = 0;
RectSur.Right = 19 ;
RectSur.Bottom = m_pMainData->m_iHeight;
}
TRect RectDst;
RectDst.left = 0;
RectDst.top = 0;
RectDst.Right = RectSur.Right-RectSur.left;
RectDst.Bottom = RectSur.Bottom;
m_pMinImg->Width = RectDst.Right;
m_pMinImg->Height = RectDst.Bottom;
m_pMinImg->Top = 0;
m_pMinImg->Left = m_pLastImg->Left + 25;
m_pMinImg->Canvas->CopyRect(RectDst,m_pMainData->m_pMinBmp->Canvas,RectSur);
}
void __fastcall TMainForm::InitCloseImg(void)
{
//TODO: Add your source code here
LoadCloseImg(false);
m_pCloseImg->Parent = this;
m_pCloseImg->Visible = true;
m_pCloseImg->Tag = uiCLOSECMD;
m_pCloseImg->Cursor = crHandPoint;
m_pCloseImg->OnMouseMove = ImageMouseMove;
m_pCloseImg->OnClick = MouseClickImg;
}
void __fastcall TMainForm::LoadCloseImg(bool bMouseOver)
{
//TODO: Add your source code here
TRect RectSur;
if(bMouseOver)
{
RectSur.Left = 19;
RectSur.Top = 0;
RectSur.Right = 19 + 19;
RectSur.Bottom = m_pMainData->m_iHeight;
}
else
{
RectSur.Left = 0;
RectSur.Top = 0;
RectSur.Right = 19 ;
RectSur.Bottom = m_pMainData->m_iHeight;
}
TRect RectDst;
RectDst.left = 0;
RectDst.top = 0;
RectDst.Right = RectSur.Right-RectSur.left;
RectDst.Bottom = RectSur.Bottom;
m_pCloseImg->Width = RectDst.Right;
m_pCloseImg->Height = RectDst.Bottom;
m_pCloseImg->Top = 0;
m_pCloseImg->Left = m_pLastImg->Left + 25 + m_pMinImg->Width;
m_pCloseImg->Canvas->CopyRect(RectDst,m_pMainData->m_pCloseBmp->Canvas,RectSur);
}
#include "Setup.h"
void __fastcall TMainForm::MouseClickImg(TObject * Sender)
{
//TODO: Add your source code here
TImage *pImage;
pImage = dynamic_cast<TImage *>(Sender);
if(pImage != NULL)
{
switch(pImage->Tag)
{
case uiMINCMD:
{
Application->Minimize();
break;
}
case uiCLOSECMD:
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -