使ShowHint可以使用多个不同的Rect进行自定义控件,每个Rect都有自己的提示

时间:2017-04-10 11:25:15

标签: c++ delphi c++builder vcl

使用C ++ Builder 2009

我有一个继承自TCustomControl的自定义控件,我在其上绘制了几个带有内容等的正方形(TRect)。

我现在想要显示Hint,因为我将鼠标悬停在每个方格上,但我不确定如何实现这一目标。

我尝试简单地使用TCustomControl的{​​{1}},并在我将鼠标悬停在方块上时更改ShowHint,但问题是控件在它之后不再显示提示首先消失,除非我离开控制并回到它。 我希望我可以简单地“重置”它的状态,同时从一个方格盘旋到另一个方格但是它不起作用。

假设我的方法开始时是错误的,请告诉我应该怎么做以达到预期的效果?

Hint

1 个答案:

答案 0 :(得分:2)

实现此功能的正确方法是让您的组件处理CM_HINTSHOW消息。邮件的LParam值将是指向THintInfo记录的指针,您可以根据需要自由修改其字段(特别是HintStrCursorRect)。

要访问记录,您可以

  • LParam直接输入THintInfo*

  • 将整个TMessage输入到TCMHintShow,然后访问其HintInfo字段。

通过定义自己的CursorRect矩形,您可以“[将控件划分为多个提示区域”,每个提示区域具有不同的HintStr值。 CursorPos字段表示鼠标在控件中的当前位置。当鼠标移出当前CursorRect之外时,控件将收到新的CM_HINTSHOW消息,您可以根据需要更新CursorRectHintStr字段。