Поделиться через


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

См. также

Ссылки

Класс CListCtrl

Диаграмма иерархии

CListCtrl::GetItemPosition