0

我有一个带有 4 个面板的 TStatusbar,其中一个设置为 OwnerDraw 样式。

onDrawPanel()事件处理程序中,我希望TStatusbar在添加一些自定义绘图之前使用默认绘制方法。

有没有办法可以从我的 onDrawPanel 处理程序调用默认处理程序?

编辑 好吧,我确实找到了一个修复程序,但我不确定如果系统字体更改它有多可靠。由于默认处理程序仅绘制面板文本,因此对 TextRect 的简单调用将执行相同的操作。

StatusBar->Canvas->TextRect(Rect,Rect.Left,Rect.Top,Panel->Text);

但是,如果系统字体、语言等不是默认设置,我不确定这将如何运作。

我仍然想得到原始问题的答案。

4

1 回答 1

1

TStatusBar 是标准 WinApi 窗口类的包装器,因此默认情况下,绘制由操作系统完成。您应该查看 WinApi 函数或类似 SB_SETTEXT 的消息

在 MSDN 上检查:SB_SETTEXT 消息

编辑:

看来DrawStatusText是正确的 WinApi 函数。如果不需要边界,则应指定 SBT_NOBORDERS 标志。

于 2014-01-25T20:10:17.647 回答