|
Panel은 Canvas를 가지고 있지않고 OnPaint에 해당하는 Event Handler 역시 없습니다. 따라서 OnPaint Event를 받을 수 있도록 프로시져를 만들어주면 됩니다.
해더 파일:
TWndMethod OriginalProc;
void __fastcall PanelProc( Messages::TMessage & msg );
소스파일:
void __fastcall TTest::FormCreate(TObject *Sender)
{
OriginalProc = pnlMap->WindowProc;
pnlMap->WindowProc = PanelProc;
}
void __fastcall TTest::FormDestroy(TObject *Sender)
{
pnlMap->WindowProc = OriginalProc;
}
void __fastcall TTest::PanelProc(Messages::TMessage & msg)
{
OriginalProc( msg );
switch (msg.Msg)
{
case WM_PAINT :
{
HDC hDC;
hDC = ::GetDC( pnlMap->Handle ); // Panel의 핸들로 DC핸들 얻죠.
Graphics::TCanvas* pCanvas = new Graphics::TCanvas();
pCanvas->Handle = hDC; // Canvas의 핸들이 DC 핸들입니다.
pCanvas->Draw( 0, 0, pBitmap );
delete pCanvas;
ReleaseDC( pnlMap->Handle, hDC );
}
break;
default:
break;
}
}
아마도 될겁니다. 예전에 사용했던 소스 부분입니다.
|