マウスクリック関数における不可解な点 – プログラミング – Home

マウスクリック関数における不可解な点
 
通知
すべてクリア

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


merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

CJPEG_MPEGDlg::OnLButtonDown(UINT nFlags, CPoint point)

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

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

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

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

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

よろしこお願いします

1w2k MFC Dlg VC++6.0


引用未解決
トピックタグ
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

OnLButtonUpは正しくきてますか?
OutputDebugString等使って、本当にイベントがきてないかどうか
まずは確認しましょう。


返信引用
ワルツ
 ワルツ
(@ワルツ)
ゲスト
結合: 23年前
投稿: 21
 

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

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


返信引用
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 80
 

>(つまり,同じ座標を連続してクリツクすると)
これは、いわゆるダブルクリックにあたるので

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

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

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


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

は,初めて知りました・・・DOWN と UP
の違い・・・

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


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

できました!
今度は,以前と比べて,安心感が芽生えました!
ありがとうございました.


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました