マウスポインタを指定範囲内で変更 – プログラミング – Home

マウスポインタを指定範囲内で変更
 
通知
すべてクリア

[解決済] マウスポインタを指定範囲内で変更


ロキ太
 ロキ太
(@ロキ太)
ゲスト
結合: 17年前
投稿: 11
Topic starter  

VC++6.0 MFCで、グラフの座標を取得するプログラムを作成中なのですが、グラフスペ
ースにマウスポインタがある場合にマウスポインタがIDC_CURSOR1というアイコンになる
ようにしたいのです。
グラフはダイアログにピクチャーコントロールを置き、ビットマップで描いています。

これを実現するための手法をご教授いただけたらよろしくお願いします。


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

WM_SETCURSOR を処理して、その中で SetCursor してやればいいと思います。


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

ONMouseMoveでグラフ上ならカーソル変更、マウスキャプチャー、
グラフからはずれたら、カーソルをもとにもどして、マウスキャプチャーを外す。
だったかな。


返信引用
ロキ太
 ロキ太
(@ロキ太)
ゲスト
結合: 17年前
投稿: 11
Topic starter  

シャノンさん、maruさん>
ありがとうございます。
WM_SETCURSORをしばらくいじってみたのですが、なにぶん知識不足で使い勝手がわから
ず使いこなせませんでした。
OnMouseMoveでカーソルがグラフの位置にある場合SetCursor(HCURSOR icon)とすること
で、グラフ内での自動変更は可能になりました。

ただ、グラフ上で何らかのマウスボタンをクリックするとカーソルがデフォルトに戻っ
てしまうのですが、これに対する対処法はどうすればいいのでしょうか。
続けざまで申し訳ありませんが、わかりましたらお願いします。


返信引用
mm
 mm
(@mm)
ゲスト
結合: 22年前
投稿: 5
 

OnSetCursor内でSetCursorを呼ぶのが簡単

ここにサンプルがある
http://support.microsoft.com/kb/131991/ja


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

本来必要がないのに全てのマウスのハンドラでカーソルを設定しなおすのは、
カッコ悪いですよね(笑)。

MFCでは多少やりづらいのですが、WNDCLASSのhCursorをNULLにすれば、次に変更する
まで設定したカーソルが維持されるようになります。これを行うにはCWnd::Create()
が実行される前にAfxRegisterWndClass()か別の手段で当該のウインドウクラスを
登録する必要があります。Create()に渡すのはこのクラス(名)です。

WM_SETCURSORに応答する必要は(たぶん)無いと思いますが、これもカーソルを変更
するひとつの方法ですね。


返信引用
ロキ太
 ロキ太
(@ロキ太)
ゲスト
結合: 17年前
投稿: 11
Topic starter  

mmさん、仲澤@失業者さん>
サンプルを参考にSetCursorの使い方をなんとか覚え、問題は解決いたしました。
仲澤@失業者さんに教えていただいた方法も自分なりに調べてみましたので、いろいろ
試してみようと思います。

朝から試行錯誤していたのですが解決できずにいたので本当に助かりました。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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