2

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);
}

破損した StatusBar の画像

4

0 に答える 0