//--------------------------------------------------------------------------- #include #include #pragma hdrstop #include "BackgroundForm.h" //--------------------------------------------------------------------------- #pragma package(smart_init) TPngImage *u_pImgCellTile = NULL; __fastcall TBackgroundForm::TBackgroundForm(TComponent* AOwner) : TForm(AOwner) { m_yLeftSide = -1; if( !u_pImgCellTile ){ u_pImgCellTile = new TPngImage(); u_pImgCellTile->LoadFromResourceName(int(HInstance), L"PngBackTile"); } } //--------------------------------------------------------------------------- __fastcall TBackgroundForm::~TBackgroundForm() { if( u_pImgCellTile ){ delete u_pImgCellTile; u_pImgCellTile = NULL; } } //--------------------------------------------------------------------------- void __fastcall TBackgroundForm::WMEraseBkgnd(Winapi::Messages::TWMEraseBkgnd &Message) { if( u_pImgCellTile ){ TCanvas* tempCanvas = new TCanvas; tempCanvas->Handle = Message.DC; int nBottom = ClientHeight - u_pImgCellTile->Height; //绘制面板上下部分 for (int i=0; i<2; i++){ int y = i==0 ? 0 : nBottom; for (int x=0; xWidth){ tempCanvas->Draw( x, y, u_pImgCellTile ); } } if( m_yLeftSide>=0 ){ //ComposeForm列表框最小化时须填充左侧 for(int y=m_yLeftSide; yHeight ){ tempCanvas->Draw( 0, y, u_pImgCellTile ); } } delete tempCanvas; Message.Result = true; } else{ DefaultHandler( &Message ); } } //---------------------------------------------------------------------------