我使用TStatusBar并将样式设置为“psOwnerDraw”以填充自定义颜色。
在正常情况下显示文本没有问题,但在我更改了Windows上的分辨率或将应用程序移出屏幕并返回后,文本已被其他文本损坏。
这是我的代码:
void __fastcall TMainForm::TotalStatusBarDrawPanel(TStatusBar * StatusBar,
TStatusPanel * Panel, const TRect & Rect)
{
TRect StatusFillRect = Rect;
TCanvas& pCan = *StatusBar->Canvas;
if (Panel->Index == 0)
{
pCan.Font->Color = clRed;
pCan.Brush->Color = clBtnFace;
}
pCan.FillRect(StatusFillRect);
DrawTextW(pCan.Handle, Panel->Text.c_str(), -1,
&StatusFillRect, DT_SINGLELINE | DT_VCENTER);
}