将样式设置为“OwnerDraw”时,TStatusBar上的文本已损坏

时间:2016-03-30 07:18:54

标签: c++builder vcl c++builder-xe6

我使用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);
}

Picture of StatusBar corrupted

0 个答案:

没有答案