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

📄 main.~cpp

📁 一个用C++Builder写的日记本程序
💻 ~CPP
📖 第 1 页 / 共 2 页
字号:
                Application->Terminate();
                break;
            }
            case uiSETUPCMD:
            {
                TSetupForm *pSetupForm = new TSetupForm(m_pMainData,m_pDatabase,Application);
                pSetupForm->Left = this->Left;
                int iHeight = this->Top + this->Height;
                if((Screen->Height - iHeight) <= pSetupForm->Height)
                {
                    pSetupForm->Top = this->Top - pSetupForm->Height;
                }
                else
                {
                    pSetupForm->Top =  iHeight;
                }

                if(pSetupForm->ShowModal() == mrOk)
                {
                    //
                    pTextPanel->Color = m_pMainData->m_pBackColor;
                    pTextPanel->Font->Color = m_pMainData->m_pFontColor;
                    pTimePanel->Color = m_pMainData->m_pBackColor;
                    pTimePanel->Font->Color = m_pMainData->m_pFontColor;
                    //m_pMemBitmap->Canvas->Brush->Color = m_pMainData->m_pBackColor;
                    //m_pMemBitmap->Canvas->Font->Color = m_pMainData->m_pFontColor;
                    
                    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;
                        }
                    }
                    pTextPanel->Invalidate();
                    DrawMemBmp();
                    //m_pMemBitmap->Canvas->Refresh();
                }
                else
                {
                    //
                }
                delete pSetupForm;
                break;
            }
            default:
            {
                break;
            }
        }
    }
}

void __fastcall TMainForm::ImageMouseDown(TObject* Sender, TMouseButton Button, 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 uiMOVECMD:
            {
                if(Button == mbLeft)
                {
                    ReleaseCapture();
                    SendMessage(Handle,WM_SYSCOMMAND,SC_MOVE|HTCAPTION,0);
                }
                break;
            }
            default:
            {
                break;
            }
        }
    }
    TPanel  *pPanel;
    pPanel = dynamic_cast<TPanel *>(Sender);
    if(pPanel != NULL)
    {
        switch(pPanel->Tag)
        {
            case uiTIMEPANEL:
            {
                if(Button == mbLeft)
                {
                    TMonthForm  *pMonthForm = new TMonthForm(m_pMainData,this);
                    pMonthForm->Left = this->Left;
                    int iHeight = this->Top + this->Height;
                    if((Screen->Height - iHeight) <= pMonthForm->Height)
                    {
                        pMonthForm->Top = this->Top - pMonthForm->Height;
                    }
                    else
                    {
                        pMonthForm->Top =  iHeight;
                    }

                    if(pMonthForm->ShowModal() == mrOk)
                    {
                        m_pMainData->m_ConfigDay = pMonthForm->MonthCalendar1->Date;
                        m_pDatabase->LoadData();
                        DrawMemBmp();
                    }
                    delete pMonthForm;
                }
                break;
            }
            case uiTEXTPANEL:
            {
                if(Button == mbLeft)
                {
                    ReleaseCapture();
                    SendMessage(Handle,WM_SYSCOMMAND,SC_MOVE|HTCAPTION,0);
                }
                break;
            }
            default:
            {
                break;
            }
        }
    }
}


void __fastcall TMainForm::Timer1Timer(TObject *Sender)
{
    //
    HDC                 hPanelDC;
    LPBITMAPVET         pBitmap;
    bool                bNextBitmap;

    time_t  tmNowTime = time(NULL);
    if((tmNowTime - m_tmPreTime) >= uiFlushTime)
    {
        String szTime = FormatDateTime("m'月'd'日' ",m_pMainData->m_ConfigDay);

        szTime += FormatDateTime("hh:nn:ss",Now());
        pTimePanel->Caption = szTime;
        m_tmPreTime = tmNowTime;
    }

    //if((tmNowTime - m_tmPreTime) >= uiFlushTime)
    if(!m_bOverPanel)
    {
        //
        hPanelDC = GetDC(pTextPanel->Handle);

        if(hPanelDC != NULL)
        {
            int iCopyWidth;
            int iCopyHeight;
            int iCopyTop = 1;

            pBitmap = GetFirstBitmap();
            if(pBitmap != NULL)
            {
                iCopyHeight = pBitmap->m_pBitmap->Height;
                pBitmap->m_iCopyLeft++;

                int iCurrWidth = GetCurrentWidth();
                if(iCurrWidth < pTextPanel->Width)
                {
                    AddNewBitmap(iCurrWidth);
                }

                if(pBitmap->m_pBitmap->Height > pTextPanel->Height)
                {
                    iCopyHeight = pTextPanel->Height;
                }
                else
                {
                    iCopyTop = (pTextPanel->Height - pBitmap->m_pBitmap->Height) / 2;
                }

                iCopyWidth = pBitmap->m_Rect.right - pBitmap->m_iCopyLeft;
                bNextBitmap = true;
                if(iCopyWidth > (pTextPanel->Width - g_iLeftPixel))
                {
                    iCopyWidth = (pTextPanel->Width - g_iLeftPixel);
                    bNextBitmap = false;
                }

                ::BitBlt(hPanelDC,g_iLeftPixel,iCopyTop,iCopyWidth,iCopyHeight,\
                        pBitmap->m_pBitmap->Canvas->Handle,pBitmap->m_iCopyLeft,0,SRCCOPY);

                while(bNextBitmap)
                {
                    pBitmap = GetNextBitmap(pBitmap);
                    if(pBitmap == NULL)
                    {
                        break;
                    }
                    //pBitmap->m_iCopyLeft++;

                    iCurrWidth = pBitmap->m_Rect.right - pBitmap->m_iCopyLeft;
                    int iShengWidth = pTextPanel->Width - iCopyWidth;
                    if(iCurrWidth > iShengWidth)
                    {
                        iCurrWidth = iShengWidth;
                    }

                    ::BitBlt(hPanelDC,g_iLeftPixel + iCopyWidth ,iCopyTop,iCurrWidth,iCopyHeight,\
                        pBitmap->m_pBitmap->Canvas->Handle,pBitmap->m_iCopyLeft,0,SRCCOPY);

                    iCopyWidth += iCurrWidth;
                    if(iCopyWidth >= pTextPanel->Width)
                    {
                        bNextBitmap = false;
                    }
                }
            }
        }

        ReleaseDC(pTextPanel->Handle,hPanelDC);
    }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CreateParams(TCreateParams & Params)
{
    //TODO: Add your source code here
    TForm::CreateParams(Params);

    Params.Style &= ~WS_CAPTION;

    Params.ExStyle &= WS_EX_TOOLWINDOW|WS_EX_TOPMOST;
}

void __fastcall TMainForm::DrawMemBmp(void)
{
    //TODO: Add your source code here
    vecNoteInfoIt       vNoteInfoIt;
    LPBITMAPVET         pBitmap;
    LPNOTEINFO          pNoteInfo;

    m_bOverPanel = true;

    m_pvBitmapList.clear();
    
    m_pMainData->SetAllBitmapFree();

    pNoteInfo = m_pMainData->GetFirstNote();
    if(pNoteInfo == NULL)
    {
        pBitmap = m_pMainData->GetAFreeBitmap();
        if(pBitmap != NULL)
        {
            pBitmap->m_szNote = -1;
            pBitmap->m_pPointBmp = m_pMainData->m_pPointBmp;
            String szHint = FormatDateTime("m'月'd'日'",m_pMainData->m_ConfigDay) + m_szMainHint;
            if(m_pMainData->m_bBigFont)
            {
                pBitmap->DrawNoteText(m_pMainData->m_pBackColor,m_pMainData->m_pFontColor,12,szHint);
            }
            else
            {
                pBitmap->DrawNoteText(m_pMainData->m_pBackColor,m_pMainData->m_pFontColor,10,szHint);
            }
            m_pvBitmapList.push_back(pBitmap);
        }

    }
    else
    {
        //
        pBitmap = m_pMainData->GetAFreeBitmap();
        if(pBitmap != NULL)
        {
            pBitmap->m_pPointBmp = m_pMainData->m_pPointBmp;
            pBitmap->m_iNoteNo = pNoteInfo->m_iNoteNo;
            if(m_pMainData->m_bBigFont)
            {
                pBitmap->DrawNoteText(m_pMainData->m_pBackColor,m_pMainData->m_pFontColor,12,pNoteInfo->m_szNote);
            }
            else
            {
                pBitmap->DrawNoteText(m_pMainData->m_pBackColor,m_pMainData->m_pFontColor,10,pNoteInfo->m_szNote);
            }
            m_pvBitmapList.push_back(pBitmap);
        }

    }

    pTextPanel->Invalidate();
    m_bOverPanel = false;

}

void __fastcall TMainForm::MyWinProc(TMessage & Message)
{
    //TODO: Add your source code here
    if(Message.Msg == WM_TASKBARCREATED)
    {
        //
        TrayIcon1->Restore();
        TrayIcon1->Visible = true;
    }
    else
    {
        m_pOldProc(Message);
    }
}
void __fastcall TMainForm::ApplicationEvents1Minimize(TObject *Sender)
{
    //
    if(!TrayIcon1->Visible)
    {
        TrayIcon1->Visible = true;
    }
    ShowWindow(Application->Handle, SW_HIDE);
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::ApplicationEvents1Restore(TObject *Sender)
{
    //
    ShowWindow(Application->Handle, SW_SHOW);
}
//---------------------------------------------------------------------------


LPBITMAPVET __fastcall TMainForm::GetFirstBitmap(void)
{
    //TODO: Add your source code here
    VetBitmapListIt    pBitmapIt;
    LPBITMAPVET        pBitmap;

    pBitmapIt = m_pvBitmapList.begin();
    while(pBitmapIt != m_pvBitmapList.end())
    {
        pBitmap = (*pBitmapIt);
        if(pBitmap->m_iCopyLeft >= pBitmap->m_Rect.Right)
        {
            m_pMainData->SetBitmapToFree(pBitmap->m_wBitmapIndex);
            pBitmapIt = m_pvBitmapList.erase(pBitmapIt);
        }
        else
        {
            return pBitmap;
        }
    }

    return NULL;
}

int __fastcall TMainForm::GetCurrentWidth(void)
{
    //TODO: Add your source code here
    VetBitmapListIt     pBitmapIt;
    int                 iWidth = 0;
    LPBITMAPVET         pBitmap;

    pBitmapIt = m_pvBitmapList.begin();
    for(;pBitmapIt != m_pvBitmapList.end();pBitmapIt++)
    {
        pBitmap = (*pBitmapIt);
        iWidth += (pBitmap->m_Rect.right - pBitmap->m_iCopyLeft + 1);  
    }

    return iWidth;

}

void __fastcall TMainForm::AddNewBitmap(int iWidth)
{
    //TODO: Add your source code here
    vecNoteInfoIt       vNoteInfoIt;
    LPBITMAPVET         pBitmap;
    int                 iCurrWidth = 0;
    LPNOTEINFO          pNoteInfo;
    VetBitmapListIt    pBitmapIt;

    if(m_pvBitmapList.size() > 0)
    {
         pBitmap = m_pvBitmapList[m_pvBitmapList.size() - 1];
         
         pNoteInfo = m_pMainData->GetNextNote(pBitmap->m_iNoteNo);
         
         if(pNoteInfo != NULL)
         {
             while(iCurrWidth < iWidth)
             {
                pBitmap = m_pMainData->GetAFreeBitmap();
                if(pBitmap != NULL)
                {
                    pBitmap->m_iNoteNo = pNoteInfo->m_iNoteNo;
                    pBitmap->m_szNote = pNoteInfo->m_szNote;
                    pBitmap->m_pPointBmp = m_pMainData->m_pPointBmp;
                    if(m_pMainData->m_bBigFont)
                    {
                        pBitmap->DrawNoteText(m_pMainData->m_pBackColor,m_pMainData->m_pFontColor,12,pBitmap->m_szNote);
                    }
                    else
                    {
                        pBitmap->DrawNoteText(m_pMainData->m_pBackColor,m_pMainData->m_pFontColor,10,pBitmap->m_szNote);
                    }
                    m_pvBitmapList.push_back(pBitmap);
                    iCurrWidth += pBitmap->m_Rect.right + 1;
                }
                pNoteInfo = m_pMainData->GetNextNote(pNoteInfo->m_iNoteNo);
             }
        }
        else
        {
            //
            while(iCurrWidth < iWidth)
             {
                pBitmap = m_pMainData->GetAFreeBitmap();
                if(pBitmap != NULL)
                {
                    pBitmap->m_iNoteNo = -1;
                    
                    String szHint = FormatDateTime("m'月'd'日'",m_pMainData->m_ConfigDay) + m_szMainHint;

                    pBitmap->m_szNote = szHint;
                    pBitmap->m_pPointBmp = m_pMainData->m_pPointBmp;
                    if(m_pMainData->m_bBigFont)
                    {
                        pBitmap->DrawNoteText(m_pMainData->m_pBackColor,m_pMainData->m_pFontColor,12,szHint);
                    }
                    else
                    {
                        pBitmap->DrawNoteText(m_pMainData->m_pBackColor,m_pMainData->m_pFontColor,10,szHint);
                    }
                    m_pvBitmapList.push_back(pBitmap);
                    iCurrWidth += pBitmap->m_Rect.right +1;
                }
             }
        }
    }
    else
    {
        DrawMemBmp();    
    }

}

LPBITMAPVET __fastcall TMainForm::GetNextBitmap(LPBITMAPVET pBitmap)
{
    //TODO: Add your source code here
    VetBitmapListIt    pBitmapIt;

    pBitmapIt = find_if(m_pvBitmapList.begin(),m_pvBitmapList.end(),\
                Find_BitmapByIndex(pBitmap->m_wBitmapIndex));
    if(pBitmapIt != m_pvBitmapList.end())
    {
        pBitmapIt++;
        if(pBitmapIt != m_pvBitmapList.end())
        {
            return *pBitmapIt;
        }
    }

    return NULL;
}


void __fastcall TMainForm::MyException(System::TObject* Sender, Sysutils::Exception* E)
{
    //TODO: Add your source code here
    char szBuff[1024];
    memset(szBuff,0,1024);
    ExceptionErrorMessage(ExceptObject(),ExceptAddr(),szBuff,1024);

    Application->MessageBoxA(szBuff,"程序错误",MB_OK);

    Application->Terminate();
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -