掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
マウスフックをグローバルフックにするには (ID:52390)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ちょっと試してみたんですが、私の技量ではマウスフックで非クライアント領域をロックする事はできませんでした。 代わりに >スクリーン上でドラッグして指定した長方形中の というボビンさんのやりたい操作と思われる操作を別の方法で作成できたので書いておきます。 確認環境は Win98SE VC++6.0 MFC ダイアログベース です。 左ドラッグで始点、終点を指定、右クリックでキャンセルするコード 関数は全てダイアログクラス所属です。 ・この操作のために追加されたクラスメンバ POINT start;//ドラッグの開始座標 POINT end;//ドラッグの終了座標 bool capflg;//マウスをキャプチャしているかどうか(ウィンドウ構築までにfalseで初期化しておく) ・開始関数 { capflg=true; SetCapture(); mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,GetMessageExtraInfo()); } ・OnLButtonDown { if(capflg==true){ start=point; return; } CDialog::OnLButtonDown(nFlags, point); } ・OnLButtonUp { if(capflg==true){ end=point; mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,GetMessageExtraInfo()); ReleaseCapture(); ClientToScreen(&start); ClientToScreen(&end); capflg=false; CString buf;//AfxMessageBox(buf)までは確認表示 buf.Format("%d,%d - %d,%d",start.x,start.y,end.x,end.y); AfxMessageBox(buf); return; } CDialog::OnLButtonUp(nFlags, point); } ・OnRButtonUp { if(capflg==true){ ReleaseCapture(); capflg=false; AfxMessageBox("キャンセル"); return; } CDialog::OnRButtonUp(nFlags, point); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.