VC++6.0 MFCで、グラフの座標を取得するプログラムを作成中なのですが、グラフスペ
ースにマウスポインタがある場合にマウスポインタがIDC_CURSOR1というアイコンになる
ようにしたいのです。
グラフはダイアログにピクチャーコントロールを置き、ビットマップで描いています。
これを実現するための手法をご教授いただけたらよろしくお願いします。
WM_SETCURSOR を処理して、その中で SetCursor してやればいいと思います。
ONMouseMoveでグラフ上ならカーソル変更、マウスキャプチャー、
グラフからはずれたら、カーソルをもとにもどして、マウスキャプチャーを外す。
だったかな。
シャノンさん、maruさん>
ありがとうございます。
WM_SETCURSORをしばらくいじってみたのですが、なにぶん知識不足で使い勝手がわから
ず使いこなせませんでした。
OnMouseMoveでカーソルがグラフの位置にある場合SetCursor(HCURSOR icon)とすること
で、グラフ内での自動変更は可能になりました。
ただ、グラフ上で何らかのマウスボタンをクリックするとカーソルがデフォルトに戻っ
てしまうのですが、これに対する対処法はどうすればいいのでしょうか。
続けざまで申し訳ありませんが、わかりましたらお願いします。
本来必要がないのに全てのマウスのハンドラでカーソルを設定しなおすのは、
カッコ悪いですよね(笑)。
MFCでは多少やりづらいのですが、WNDCLASSのhCursorをNULLにすれば、次に変更する
まで設定したカーソルが維持されるようになります。これを行うにはCWnd::Create()
が実行される前にAfxRegisterWndClass()か別の手段で当該のウインドウクラスを
登録する必要があります。Create()に渡すのはこのクラス(名)です。
WM_SETCURSORに応答する必要は(たぶん)無いと思いますが、これもカーソルを変更
するひとつの方法ですね。
mmさん、仲澤@失業者さん>
サンプルを参考にSetCursorの使い方をなんとか覚え、問題は解決いたしました。
仲澤@失業者さんに教えていただいた方法も自分なりに調べてみましたので、いろいろ
試してみようと思います。
朝から試行錯誤していたのですが解決できずにいたので本当に助かりました。
ありがとうございました。