⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 一个用C++Builder写的日记本程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#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 + -