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