渋谷ほととぎす通信

新しいこと、枯れたこと問わず大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ

C#でDirectX11 SlimDXでマウスのスクリーン座標を取得する


f:id:esakun:20181118205657p:plain

SlimDXはぶっちゃけ関係ないのですが、SlimDXを使用する上で、マウス座標を取得したくなるケースがあります。そんな時、DirectInputを使えばよいと勝手に思っていたのですが、あくまでマウスの移動量しか取得できませんでした。

調査の結果、Window.FormのAPIを使えば簡単に取れるということが分かりました。
※Windows開発経験のなさが如実に表れた形です

PointToClient(Cursor.Position);

結論から言うと、上記のようにControlクラスのPointToClientメソッドにCursor.Positionを突っ込むだけです。
※最初Cursor.Positionで取得できると思ったのですが、このAPIはPC画面全体のマウスポジションを返却するAPIでした

このような感じのAPIを自作のライブラリSlimDXSketchにも追加しています。
ウィンドウ内におけるマウス座標取得API追加 · baobao/SlimDXSketch@796b7ad · GitHub

以上

参考