CListCtrl::HitTest
Определяет, какой элемент списка, если они есть в указанной позиции.
int HitTest(
LVHITTESTINFO* pHitTestInfo
) const;
int HitTest(
CPoint pt,
UINT* pFlags = NULL
) const;
Параметры
pHitTestInfo
Адрес структуры LVHITTESTINFO, содержащая позицию для проверки нажатия и которая возвращает сведения о результатах проверки нажатия.pt
Проверяемая точка.pFlags
Указатель целого числа, которое получает сведения о результатах теста. См. описание элемента флаги структуры LVHITTESTINFO в Windows SDK.
Возвращаемое значение
Индекс элемента в позиции, указанной pHitTestInfo, если они есть или значение -1, в противном случае.
Заметки
Можно использовать LVHT_ABOVE, LVHT_BELOW, LVHT_TOLEFT и значения LVHT_TORIGHT элемента flag структуры, чтобы определить, можно ли выполнить прокрутку содержимого элемента управления "список". 2 Этих флагов можно объединять, например, если положение над и слева от клиентской области.
Можно проверять значения LVHT_ONITEM элемента flag структуры, чтобы определить, является ли данный индекс находится над элементом списка. Это значение побитовой операции OR на LVHT_ONITEMICON, LVHT_ONITEMLABEL и значениях LVHT_ONITEMSTATEICON элемента flag структуры.
Пример
void CListCtrlDlg::OnRClick(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pia = (LPNMITEMACTIVATE)pNMHDR;
CPoint point(pia->ptAction);
// Select the item the user clicked on.
UINT uFlags;
int nItem = m_myListCtrl.HitTest(point, &uFlags);
if (uFlags & LVHT_ONITEMLABEL)
{
m_myListCtrl.SetItem(nItem, 0, LVIF_STATE, NULL, 0, LVIS_SELECTED,
LVIS_SELECTED, 0);
}
*pResult = 0;
}
Требования
Header: afxcmn.h