いつもお世話になっております。
CListCtrlのOnLButtonDownについてご質問させてください。
CListCtrlでItemを選択(クリックで)する際、常にCtrlキーを押下した状態と
同様にしたいのですがどうすればよいでしょうか?
下記のような実装を試みたのですがどうもうまくいきません。
void CMyListCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
nFlags |= MK_CONTOROL;
CListCtrl::OnLButtonDown(nFlags, point);
}
どうかご教授をお願いいたします。
こんなカンジでどうでしょう?
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);
}
ご回答ありがとうございます。
上記の方法を確認いたしました。
しかし、どうしても条件として、
CListCtrl::OnLButtonDown(nFlags, point);
を呼んだ上でCtrlキー押下状態を実現したく
他の掲示板にも質問した結果、解決することができました。
説明不足で申し訳ありませんでした。
BOOL CMyListCtrl::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_LBUTTONDOWN) {
pMsg->wParam |= MK_CONTROL;
}
return CListCtrl::PreTranslateMessage(pMsg);
}
