在鼠标悬停上获取 ClistBox 项的索引

get the index of the ClistBox item on Mouse over

本文关键字:索引 ClistBox 获取 鼠标 悬停      更新时间:2023-10-16

我有一个简单的CListBox控件。我在其中动态添加文本。是否可以获取鼠标当前悬停在列表框上的项的索引?基本上,我想根据鼠标位置为列表框中的每个项目显示工具提示。

非常感谢代码示例。

CListBox::ItemFromPoint 成员返回最靠近点的项的项索引。

该点需要位于CListBox的客户端坐标中。如果您在屏幕坐标中收到它们(例如,通过调用 GetCursorPos),则必须在CListBox上调用 CWnd::ScreenToClient 来翻译它们。

第二个参数 (bOutside) 告诉您位置是否在项目上方。成员函数分别返回 FALSETRUE

我正在写这个答案,以便其他人在其他人面临此问题时可以获得帮助。首先要做的事;您无法直接从 Clistbox 处理鼠标移动消息。因此,您基于 ClistBox 类创建一个新类,然后在该类中处理 OnMouseMove()。然后,在该 OnMouseMove() 函数中,您应该根据鼠标坐标在列表框中获取项目(如 IInspectable 所述)。

有关代码示例;请参见下文。

BOOL b;
int n = ItemFromPoint(point,b);
CString str;
GetText( n,str);
AfxMessageBox(str);