【问题标题】:How to call the default handler from within an event handler如何从事件处理程序中调用默认处理程序
【发布时间】:2014-01-22 01:58:37
【问题描述】:

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

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

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

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

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

但是,如果系统字体、语言等不是默认设置,我不确定它的效果如何。

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

【问题讨论】:

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


    【解决方案1】:

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

    在 MSDN 上查看:SB_SETTEXT message

    编辑:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多