掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
リストのHitTestで、アイテム0とヘッダコントロールを判断するには? (ID:60932)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
CListCtrl::HitTest で、マウスポインタがどのアイテム上に存在するかを判断したく、 LVHT_ONITEM を引数に渡してアイテム番号を取得したのですが… デバッグしてみると、リストアイテム上にマウスカーソルが存在する状態で、ヘッダコントロールにカーソルを移動すると、ヘッダコントロール上でアイテム番号0 として返答されてしまいます。 リストアイテム上にマウスカーソルがない状態(リストの外)から、ヘッダコントロールにカーソルを移動した場合は、期待値どおり -1(対象アイテムなし) で返答されます。 とりあえずは、ヘッダコントロールの矩形(CRect)を取得して、マウスカーソルがその矩形内にある場合は、対象アイテムなし、と判断してみましたが、 何かほかに良い方法はありますでしょうか? // マウスカーソル位置のリストアイテムを検索 CPoint ptCursorPos = (CPoint)GetMessagePos(); ScreenToClient(&ptCursorPos); UINT uiFlag = LVHT_ONITEM; int nNowOverItem = HitTest(ptCursorPos, &uiFlag); BOOL bFuncExec = FALSE;// 処理実行フラグ if (nNowOverItem != -1)//マウスカーソルがアイテム上にある… { // ヘッダコントロール上にマウスカーソルがあるかもしれないのでチェック CRect rcHeader; GetHeaderCtrl()->GetClientRect(&rcHeader); if (ptCursorPos.y < rcHeader.bottom) { // マウスカーソルがヘッダコントロール上にあるので処理回避 bFuncExec = FALSE; } else { bFuncExec = TRUE; } } else//マウスカーソルがアイテム上にない… { bFuncExec = FALSE; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.