プロが教える店舗&オフィスのセキュリティ対策術

ON_WM_LBUTTONDOWN()は実行できるのですが、
ON_WM_LBUTTONUP()が実行できません。
OnLButtonDown()内のCListCtrl::OnLButtonDown(nFlags, point);
を削除するとON_WM_LBUTTONUP()が実行されるのですが、
今度はCLisCtrlのリストアイテムが選択されません。

1クリックでDOWN、UP両方とも起動させるにはどうすればいいでしょうか?

他に
ON_WM_LBUTTONDBLCLK()
ON_NOTIFY_REFLECT(LVN_BEGINDRAG,&CListCtrl::OnLvnBegindrag)
の2つも拾うようにしています。これが原因なのでしょうか?

A 回答 (1件)

意見のみですが...



>ON_NOTIFY_REFLECT(LVN_BEGINDRAG,&CListCtrl::OnLvnBegindrag)
>の2つも拾うようにしています
ドラッグも期待されているようですが、ドラッグされた場合には通常のWM_LBUTTONUP は諦めるべきかと思います。

ドラッグを諦めれば WM_LBUTTONUP は処理できるのが筋と思いますが、ListCtrl にドラッグだけしないように指示する方法は判りません。恐らくエクスプローラの為に作られているので、それ程汎用性は無いのだと思います。

今思い付くのは、既に確認されているように CListCtrl::OnLButtonDown(nFlags, point) の読み出しを止めて、LBUTTONDOWN を知らせないようにする位ですかね。しかしリストアイテム選択を始め、ListCtrlがやっている仕事は全て自分で書かねばなりません。

私なら WM_LBUTTONUP でやるべき作業を他でできないか検討する、でしょうか。
    • good
    • 0
この回答へのお礼

ドラッグドロップの理解もあやしくいっぱいいっぱいになっていました。
dragとUPの両立は無理だと教えていただきありがとうございました。

お礼日時:2008/12/08 11:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!