CJPEG_MPEGDlg::OnLButtonDown(UINT nFlags, CPoint point)
↑の関数は,マウスの左クリックを検出する関数ですが
どちら様もご存知かと思われます.
しかし,僕はこの関数がうまく使えません.
どううまく使えないのか,それは以下のとおりです.
(プログラム例)
ダイアログのピクチャボックス内で,左マウスを
クリツクすると,その位置座標を記憶し,次の画像に
切り替わるプログラムを作りました.
通常はうまく行くのですが,
マウスを全く動かさずにクリックすると
(つまり,同じ座標を連続してクリツクすると)
この関数が一見二回に一回実行されているように
見受けられます.
なぜ,同じ座標点をクリックすると
この関数が正常に動作してくれないのでしょうか.
よろしこお願いします
1w2k MFC Dlg VC++6.0
OnLButtonUpは正しくきてますか?
OutputDebugString等使って、本当にイベントがきてないかどうか
まずは確認しましょう。
これは、正確に言うと左クリックのメッセージハンドラではないでしょう。
あくまで、マウスの左ボタンが”押されたとき”のメッセージです。
(左ボタンを離す前にくるメッセージです)
正確にクリックを検知したいなら,OnLButtonDown、OnLButtonUpの
両方で処理したほうがよいでしょう。
>(つまり,同じ座標を連続してクリツクすると)
これは、いわゆるダブルクリックにあたるので
MSDN CWnd::OnLButtonDblClkに書いてありますが
MSDNより
<マウス左ボタンをダブル クリックしたとき、実際には 4 つのイベントが生成されます。
<WM_LBUTTONDOWN、WM_LBUTTONUP、WM_LBUTTONDBLCLK メッセージと、ボタンが離されたとき
<にもう一度生成される WM_LBUTTONUP メッセージです。
MSDNより
CWnd::OnLButtonUpで処理すれば、良さそうです。
は,初めて知りました・・・DOWN と UP
の違い・・・
さっそく取り掛かってみます!!
できました!
今度は,以前と比べて,安心感が芽生えました!
ありがとうございました.