CListCtrlでのOnLButtonDownについて

[戻る]
ueno 2002/09/06(金) 16:46:11
いつもお世話になっております。

CListCtrlのOnLButtonDownについてご質問させてください。
CListCtrlでItemを選択(クリックで)する際、常にCtrlキーを押下した状態と
同様にしたいのですがどうすればよいでしょうか?

下記のような実装を試みたのですがどうもうまくいきません。

void CMyListCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
  nFlags |= MK_CONTOROL;
  CListCtrl::OnLButtonDown(nFlags, point);
}

どうかご教授をお願いいたします。

HEARTS 2002/09/09(月) 12:03:14
こんなカンジでどうでしょう?
void CListCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
    // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォル
トの処理を呼び出してください
    int nItem = HitTest(point);
     UINT nState

    if (nItem >= 0) {
        nState = GetItemState(nItem, LVIS_SELECTED);
        if (nState == LVIS_SELECTED) {
            SetItemState(nItem, 0, LVIS_SELECTED);
        } else {
            SetItemState(nItem, LVIS_SELECTED, LVIS_SELECTED);
        }
    }

//    CListCtrl::OnLButtonDown(nFlags, point);
}

ueno 2002/09/10(火) 09:18:24
[[解決]]
ご回答ありがとうございます。
上記の方法を確認いたしました。

しかし、どうしても条件として、
CListCtrl::OnLButtonDown(nFlags, point);
を呼んだ上でCtrlキー押下状態を実現したく
他の掲示板にも質問した結果、解決することができました。
説明不足で申し訳ありませんでした。

BOOL CMyListCtrl::PreTranslateMessage(MSG* pMsg) 
{
    if (pMsg->message == WM_LBUTTONDOWN) {
        pMsg->wParam |= MK_CONTROL;
    }
    return CListCtrl::PreTranslateMessage(pMsg);
}

古いスレッドには追加発言できません。