プロが教えるわが家の防犯対策術!

VC++のver6.0を使用している者です.

今回「カーソルがウィンドウの中心に固定されていて,左ボタンをクリックすると自由に動かすことができ,もう一度クリックするとカーソルは初期位置に戻り,再び固定されて動かすことが出来ない」というアプリを作成しようと思っています.

コンセプトとして,
・ウィンドウズメッセージハンドラのWM_LBUTTONDOWNを用いる
・BOOL型の変数を用意し,左ボタンが押される度に真偽を入れ替える
・TRUEの状態ならば自由にカーソルを動かせる
・FALSEの状態だとウィンドウの中心に固定される(マウスを動かしてもカーソルは動かない)
という感じにしたいと考えています.

しかし,カーソルを固定,およびその解除の方法が分かりません.どのようにやればよいのでしょうか…よい方法がありましたら,ご教授ください.

よろしくお願いします.

A 回答 (3件)

> カーソルはマウスカーソルを使おうと思ってます.



不具合があったり、使い方を知らない人が使うと終了の操作が出来なかったり、問題が多いですが…。
ジョークソフトなんかで作った記憶はあります。

その場合は、カーソルの描画はWindowsがやってくれますので、特別な処理は不要です。
マウスが移動したOnMouseMoveのイベント時、固定するモードだったら、::SetCursorPosで位置を固定して、CWnd::OnMouseMoveのオーバーライドを行わせないとかで良かったかと。
    • good
    • 0
この回答へのお礼

再び回答ありがとうございます.

そうですね,再度調べてみたらWindowsの機能でSetCursorPosや,あとClipCursorで点固定,というものがあるみたいです.どのようにするかはまた考え直さなければならないと思いますが,それらを活用してみようと思います.

お礼日時:2006/10/17 18:50

Win32APIの


ClipCursorも参考までに。
カーソルの移動範囲を指定矩形内に限定させます。
お手軽ですよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます.

そうですね,調べてみたらClipCursorは使いやすそうでした.
ぜひ挑戦してみたいと思います.

お礼日時:2006/10/18 14:17

> カーソルを固定,およびその解除の方法が分かりません.



固定するカーソルと言うのは、Windowsの操作にも使用するマウスカーソルですか?アプリケーション独自のカーソル?

後者だとして、OnPaintなどで、基本的に常にカーソルの位置は常に描画します。
固定、解除に関しては、描画するXY位置を変更します。
TRUEの状態になった瞬間に、現在のマウスカーソルの位置を取得しておきます。マウスが動くたびに元の位置からの変化量を計算し、XYに格納。再描画。
FALSEの際には、XYには中心の位置を格納。
とかかなあ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます.

OnPaint関数を用いる方法は参考になりました.

ただ…申し訳ないのですが,カーソルはマウスカーソルを使おうと思ってます.「カーソルの位置のをx,y座標で予め指定→固定」の流れでいきたいのですが,マウスカーソルだとしんどいでしょうか。いろいろ調べてみたのですが,分かりませんでした。

後者の方が書きやすいのなら,そちらで検討してみようと思います.

お礼日時:2006/10/17 16:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!