マウスでの座標取得(GetCursorPos)について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
はりた

マウスでの座標取得(GetCursorPos)について

#1

投稿記事 by はりた » 10年前

使用環境はWindows7、Visual Studio 2013、C++、Directx9です。

前フレームと現フレームのマウスの座標の差を取って
その差分を使って、カメラを移動させたりしているのですが
(以下コード)

コード:

	
POINT Mouse::MouseRelPos()
{
	// マウス座標(相対)
	POINT pos;
	//画面全体でのマウスカーソルの位置を取得
	GetCursorPos(&p);
	//	前フレームとの座標差を算出
	pos.x = OldPos.x - pos.x;
	pos.y = OldPos.y - pos.y;
	//	座標更新
	GetCursorPos(&OldPos);

	return pos;
};
このコードだと当たり前なのですが、モニターの端などでマウスを動かしてもがマウスカーソルが動けなくなると差が0になってしまいます。
そうすると、端にいく度にマウスを戻してまた動かす、という事になってしまいます。

私の理想では、端にマウスが行こうとも実際のマウスが動いた分を反映させてやりたいのですがどうしたらよろしいでしょうか…
もしよろしければお教えいただけないでしょうか。
よろしくお願いします。

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: マウスでの座標取得(GetCursorPos)について

#2

投稿記事 by h2so5 » 10年前

はりた さんが書きました: 私の理想では、端にマウスが行こうとも実際のマウスが動いた分を反映させてやりたいのですがどうしたらよろしいでしょうか…
もしよろしければお教えいただけないでしょうか。
Raw Input というAPIを使えばできるようです。
参考:
Getting mouse position unbounded by screen size, c++ & windows
About Raw Input (Windows)

理想的ではない方法で良いなら、FPSのようにSetCursorPosでカーソルを元の位置に戻すのが現実的な解決方法です。

はりた

Re: マウスでの座標取得(GetCursorPos)について

#3

投稿記事 by はりた » 10年前

h2so5さん
貼って下さったRaw Inputのサイトを読んでみたのですが
如何せん英語がそこまで読めないもので、翻訳してもよく分からなかったので
FPSのようにというお話から強制的にクリックした瞬間の座標へSetCursorPosで戻すことにしました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る