ページ 11

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

Posted: 2014年5月14日(水) 20:42
by はりた
使用環境は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になってしまいます。
そうすると、端にいく度にマウスを戻してまた動かす、という事になってしまいます。

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

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

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

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

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

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