我有一个简单的 CListBox 控件。我在其中动态添加文本。是否可以获取鼠标当前悬停在列表框上的项目的索引?基本上,我想根据鼠标位置为 listBox 中的每个项目显示一个工具提示。
代码示例非常感谢。
CListBox::ItemFromPoint成员返回离点最近的项目的项目索引。
该点需要位于CListBox
. 如果您在屏幕坐标中接收它们(例如通过调用GetCursorPos),则必须在CListBox
.
第二个参数 ( bOutside ) 告诉您,该位置是否在项目上方。成员函数分别返回FALSE
or TRUE
。
我正在写这个答案,以便其他人可以在其他人面临这个问题的情况下获得帮助。首先要做的事;您不能直接处理来自 Clistbox 的鼠标移动消息。因此,您基于 ClistBox 类创建一个新类,然后在该类中处理 OnMouseMove()。然后,在该 OnMouseMove() 函数中,您应该根据鼠标坐标获取 clistbox 中的项目(如 IInspectable 所述)。
对于代码示例;见下文。
BOOL b;
int n = ItemFromPoint(point,b);
CString str;
GetText( n,str);
AfxMessageBox(str);