VC++のver6.0を使用している者です.
今回「カーソルがウィンドウの中心に固定されていて,左ボタンをクリックすると自由に動かすことができ,もう一度クリックするとカーソルは初期位置に戻り,再び固定されて動かすことが出来ない」というアプリを作成しようと思っています.
コンセプトとして,
・ウィンドウズメッセージハンドラのWM_LBUTTONDOWNを用いる
・BOOL型の変数を用意し,左ボタンが押される度に真偽を入れ替える
・TRUEの状態ならば自由にカーソルを動かせる
・FALSEの状態だとウィンドウの中心に固定される(マウスを動かしてもカーソルは動かない)
という感じにしたいと考えています.
しかし,カーソルを固定,およびその解除の方法が分かりません.どのようにやればよいのでしょうか…よい方法がありましたら,ご教授ください.
よろしくお願いします.
No.2ベストアンサー
- 回答日時:
> カーソルはマウスカーソルを使おうと思ってます.
不具合があったり、使い方を知らない人が使うと終了の操作が出来なかったり、問題が多いですが…。
ジョークソフトなんかで作った記憶はあります。
その場合は、カーソルの描画はWindowsがやってくれますので、特別な処理は不要です。
マウスが移動したOnMouseMoveのイベント時、固定するモードだったら、::SetCursorPosで位置を固定して、CWnd::OnMouseMoveのオーバーライドを行わせないとかで良かったかと。
再び回答ありがとうございます.
そうですね,再度調べてみたらWindowsの機能でSetCursorPosや,あとClipCursorで点固定,というものがあるみたいです.どのようにするかはまた考え直さなければならないと思いますが,それらを活用してみようと思います.
No.3
- 回答日時:
Win32APIの
ClipCursorも参考までに。
カーソルの移動範囲を指定矩形内に限定させます。
お手軽ですよ。
No.1
- 回答日時:
> カーソルを固定,およびその解除の方法が分かりません.
固定するカーソルと言うのは、Windowsの操作にも使用するマウスカーソルですか?アプリケーション独自のカーソル?
後者だとして、OnPaintなどで、基本的に常にカーソルの位置は常に描画します。
固定、解除に関しては、描画するXY位置を変更します。
TRUEの状態になった瞬間に、現在のマウスカーソルの位置を取得しておきます。マウスが動くたびに元の位置からの変化量を計算し、XYに格納。再描画。
FALSEの際には、XYには中心の位置を格納。
とかかなあ。
回答ありがとうございます.
OnPaint関数を用いる方法は参考になりました.
ただ…申し訳ないのですが,カーソルはマウスカーソルを使おうと思ってます.「カーソルの位置のをx,y座標で予め指定→固定」の流れでいきたいのですが,マウスカーソルだとしんどいでしょうか。いろいろ調べてみたのですが,分かりませんでした。
後者の方が書きやすいのなら,そちらで検討してみようと思います.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
- Windows 8 動画の再生とタイトルの変更方法を教えてください。 3 2022/08/01 14:51
- Windows 10 Windows11タスクバーやエクスプローラー、スタートメニュー 動画全画面時にカーソルが見えない 1 2022/04/08 00:03
- iPad これまでタブレットは何台使ったか数え切れないほどですが、今回iPadを初めて手に入れました。 全体的 5 2022/08/07 18:34
- Excel(エクセル) エクセルVBA 任意のセルの選択時、指定のセルの値を表示 1 2023/04/21 08:13
- モニター・ディスプレイ マルチモニタでのカーソルの動き方 1 2022/06/15 14:59
- マウス・キーボード キーボード設定で困っています。長文です。 2 2022/12/10 12:44
- Excel(エクセル) Excelで、カーソルの移動が異常です。 1 2022/06/15 20:54
- Windows 7 更新プログラムを入れたら操作出来なくなりました(泣) 1 2023/02/26 11:04
- マウス・キーボード マウスのないパソコン 9 2022/03/30 10:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字の行間
-
NVIDIAのシェーダーキャッシュ
-
VB6,リストボックスの特定行の...
-
OnDrawが呼び出されません
-
OneNote 2010 文字と描画がずれる
-
ビットマップを表示させる(MFC)
-
矢印を描画するには
-
StretchBlt関数について
-
ダイアログのボタンコントロー...
-
中抜き文字の印刷
-
ブレゼンハムのアルゴリズムに...
-
VB.NETでPictureBoxへの描画に...
-
描画を透明にする方法
-
VBAにGDI+を参照させる方法
-
InvalidateRectの使い方について
-
Form1 Load で実行されない。
-
Labelの文字をスクロールする際...
-
OpenCV処理画像をpictureBoxへ。
-
カスタムビューがスクロールビ...
-
MFC DrawText 背景色とフォント
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
NVIDIAのシェーダーキャッシュ
-
VB6,リストボックスの特定行の...
-
[VB.net] DataGridViewの列ヘッ...
-
word
-
UpdateData( FALSE); による文...
-
TextBoxに文字を書いても表示さ...
-
VC++プログラムをつかったBMP画...
-
MFCでOnPaintのタイミング
-
エクセルでガンチャートを作成...
-
InvalidateRectの使い方について
-
FlexGridの一部のみ表示を更新...
-
VB.NETでPictureBoxへの描画に...
-
MFCのタイマーのつかい方を教え...
-
CStaticコントロールの静的イメ...
-
VBAにGDI+を参照させる方法
-
画面全体を再描画させたい
-
Labelの文字をスクロールする際...
-
Form1 Load で実行されない。
-
panelのスクロール表示について
-
CScrollViewの使用方法について
おすすめ情報