TPanel自畫,無法顯示已經在它身上創建的其它控制元件
有沒有什么好辦法,顯示它身上創建的其它控制元件? 或者,其它控制元件也要自己畫了?
接管TPanel WndProc 用以下代碼自畫.
WndProc(Msg);
if (Msg.Msg == WM_PAINT)
{
TControlCanvas *PanelCanvas=new TControlCanvas();
try
{
PanelCanvas->Control = this;
int iSaveIndex;
TPoint Position;
iSaveIndex = SaveDC(PanelCanvas->Handle);
GetViewportOrgEx(PanelCanvas->Handle, &Position);
SetViewportOrgEx(PanelCanvas->Handle, Position.x - this->Left, Position.y - this->Top, NULL);
IntersectClipRect(PanelCanvas->Handle, 0, 0, this->Parent->ClientWidth,
this->Parent->ClientHeight);
this->Parent->Perform(WM_ERASEBKGND, (int)PanelCanvas->Handle, 0);
this->Parent->Perform(WM_PAINT, (int)PanelCanvas->Handle, 0);
RestoreDC(PanelCanvas->Handle, iSaveIndex);
PanelCanvas->Brush->Color = clRed;
PanelCanvas->Pen->Width = 1;
PanelCanvas->FrameRect(TRect(0, 0, this->Width - 1, this->Height - 1));
}
__finally
{
delete PanelCanvas;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91597.html
標籤:VCL組件使用和開發
