получить индекс элемента ClistBox при наведении мыши

У меня есть простой элемент управления CListBox. Я динамически добавляю тексты в нем. Можно ли получить индекс элемента, над которым в данный момент находится курсор мыши, в списке?
По сути, я хочу отобразить всплывающую подсказку для каждого элемента списка в зависимости от положения мыши.

Примеры кода действительно ценятся.

0

Решение

CListBox :: ItemFromPoint элемент возвращает индекс элемента ближайшего к точке элемента.

Точка должна быть в клиентских координатах CListBox, Если вы получаете их в экранных координатах (например, по телефону GetCursorPos), вам придется переводить их по телефону CWnd :: ScreenToClient на CListBox,

Второй параметр (bOutside) говорит вам, находится ли позиция над предметом или нет. Функция-член возвращает FALSE или же TRUEсоответственно.

2

Другие решения

Я пишу этот ответ, чтобы другие могли получить помощь в случае, если кто-то еще столкнулся с этой проблемой.
Обо всем по порядку; Вы не можете напрямую обрабатывать сообщения о перемещении мыши из Clistbox. Итак, вы создаете новый класс на основе класса ClistBox и затем обрабатываете OnMouseMove () в этом классе. Затем внутри этой функции OnMouseMove () вы должны получить элемент в clistbox на основе координат мыши (как упомянуто IInspectable).

Для примера кода; увидеть ниже.

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

По вопросам рекламы [email protected]