CListCtrl::HitTest

更新 : 2007 年 11 月

指定した位置にリスト ビュー アイテムがあるかどうかを調べます。

int HitTest(
   LVHITTESTINFO* pHitTestInfo 
) const;
int HitTest(
   CPoint pt,
   UINT* pFlags = NULL 
) const;

パラメータ

  • pHitTestInfo
    ヒット テストする位置を持ち、ヒット テストの結果を受け取る LVHITTESTINFO 構造体のアドレス。

  • pt
    テストされる点。

  • pFlags
    テストの結果を受け取る整数へのポインタ。Windows SDK の「LVHITTESTINFO」構造体で、flags メンバの説明を参照してください。

戻り値

pHitTestInfo で指定した位置にアイテムがある場合はそのインデックスを返します。ない場合は -1 を返します。

解説

構造体の flags メンバ値 LVHT_ABOVELVHT_BELOWLVHT_TOLEFTLVHT_TORIGHT を使って、リスト ビュー コントロールの内容をスクロールするかどうかを決定できます。たとえば、位置がクライアント領域の左上のときは、2 つのフラグを組み合わせて使います。

構造体の flags メンバ値 LVHT_ONITEM を使って、指定した位置がリスト ビュー アイテム上にあるかどうかを調べることができます。この値は、構造体の flags メンバ値 LVHT_ONITEMICONLVHT_ONITEMLABEL、および LVHT_ONITEMSTATEICON のビットごとの OR 演算子です。

使用例

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;
}

必要条件

ヘッダー : afxcmn.h

参照

参照

CListCtrl クラス

階層図

CListCtrl::GetItemPosition

その他の技術情報

CListCtrl のメンバ