マウスクリック関数における不可解な点

[戻る]
merlo 2002/05/14(火) 14:24:13
CJPEG_MPEGDlg::OnLButtonDown(UINT nFlags, CPoint point)

↑の関数は,マウスの左クリックを検出する関数ですが
どちら様もご存知かと思われます.

しかし,僕はこの関数がうまく使えません.
どううまく使えないのか,それは以下のとおりです.


(プログラム例)
ダイアログのピクチャボックス内で,左マウスを
クリツクすると,その位置座標を記憶し,次の画像に
切り替わるプログラムを作りました.

通常はうまく行くのですが,
マウスを全く動かさずにクリックすると
(つまり,同じ座標を連続してクリツクすると)
この関数が一見二回に一回実行されているように
見受けられます.

なぜ,同じ座標点をクリックすると
この関数が正常に動作してくれないのでしょうか.

よろしこお願いします

1w2k MFC Dlg VC++6.0

いもちぃ 2002/05/14(火) 14:35:58
OnLButtonUpは正しくきてますか?
OutputDebugString等使って、本当にイベントがきてないかどうか
まずは確認しましょう。

ワルツ 2002/05/14(火) 14:37:35
これは、正確に言うと左クリックのメッセージハンドラではないでしょう。
あくまで、マウスの左ボタンが”押されたとき”のメッセージです。
(左ボタンを離す前にくるメッセージです)

正確にクリックを検知したいなら,OnLButtonDown、OnLButtonUpの
両方で処理したほうがよいでしょう。

不良PG [E-Mail] 2002/05/14(火) 14:45:25
>(つまり,同じ座標を連続してクリツクすると)
これは、いわゆるダブルクリックにあたるので

MSDN CWnd::OnLButtonDblClkに書いてありますが

MSDNより
<マウス左ボタンをダブル クリックしたとき、実際には 4 つのイベントが生成されます。
<WM_LBUTTONDOWN、WM_LBUTTONUP、WM_LBUTTONDBLCLK メッセージと、ボタンが離されたとき
<にもう一度生成される WM_LBUTTONUP メッセージです。
MSDNより


CWnd::OnLButtonUpで処理すれば、良さそうです。

merlo 2002/05/14(火) 16:35:10
[[解決]]
は,初めて知りました・・・DOWN と UP
の違い・・・

さっそく取り掛かってみます!!

merlo 2002/05/14(火) 17:19:51
[[解決]]
できました!
今度は,以前と比べて,安心感が芽生えました!
ありがとうございました.

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