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