如何从事件处理程序中调用默认处理程序

时间:2014-01-22 01:58:38

标签: event-handling c++builder vcl c++builder-xe5

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

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

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

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

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

但是,如果系统字体,语言等不是默认设置,我不确定这会有多好。

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

1 个答案:

答案 0 :(得分:1)

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

之类的消息

在MSDN上查看:SB_SETTEXT message

编辑:

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