使用C ++ Builder 2009
我有一个继承自TCustomControl
的自定义控件,我在其上绘制了几个带有内容等的正方形(TRect
)。
我现在想要显示Hint,因为我将鼠标悬停在每个方格上,但我不确定如何实现这一目标。
我尝试简单地使用TCustomControl
的{{1}},并在我将鼠标悬停在方块上时更改ShowHint
,但问题是控件在它之后不再显示提示首先消失,除非我离开控制并回到它。
我希望我可以简单地“重置”它的状态,同时从一个方格盘旋到另一个方格但是它不起作用。
假设我的方法开始时是错误的,请告诉我应该怎么做以达到预期的效果?
Hint
答案 0 :(得分:2)
实现此功能的正确方法是让您的组件处理CM_HINTSHOW
消息。邮件的LParam
值将是指向THintInfo
记录的指针,您可以根据需要自由修改其字段(特别是HintStr
和CursorRect
)。
要访问记录,您可以
将LParam
直接输入THintInfo*
。
将整个TMessage
输入到TCMHintShow
,然后访问其HintInfo
字段。
通过定义自己的CursorRect
矩形,您可以“[将控件划分为多个提示区域”,每个提示区域具有不同的HintStr
值。 CursorPos
字段表示鼠标在控件中的当前位置。当鼠标移出当前CursorRect
之外时,控件将收到新的CM_HINTSHOW
消息,您可以根据需要更新CursorRect
和HintStr
字段。