C# 获取原始鼠标移动(非屏幕位置)

C# 获取原始鼠标移动(非屏幕位置),c#,.net,xna,C#,.net,Xna,我一直在使用xna鼠标类,我能够获得每帧鼠标移动的唯一方法是每次将鼠标重置到屏幕中心,然后在将其放回中心之前测量位移。这看起来非常粗糙,我的鼠标支持5700dpi的分辨率,当xna为屏幕位置返回一个整数时,我肯定得不到这个分辨率。如果使用鼠标。设置位置并且测量偏移量对您不起作用,您需要使用xna以外的API 您要使用的API是WM\u INPUT这是一条可以通过挂接消息循环接收的消息。(注意:XNA的API相当于WM_MOUSEMOVE,所以不要使用它。) 有一些关于API选择的介绍性详细信息,

我一直在使用xna鼠标类,我能够获得每帧鼠标移动的唯一方法是每次将鼠标重置到屏幕中心,然后在将其放回中心之前测量位移。这看起来非常粗糙,我的鼠标支持5700dpi的分辨率,当xna为屏幕位置返回一个整数时,我肯定得不到这个分辨率。

如果使用
鼠标。设置位置
并且测量偏移量对您不起作用,您需要使用xna以外的API

您要使用的API是
WM\u INPUT
这是一条可以通过挂接消息循环接收的消息。(注意:XNA的API相当于
WM_MOUSEMOVE
,所以不要使用它。)

有一些关于API选择的介绍性详细信息,还有一些用于鼠标输入的示例代码(用C++编写)

如果您不熟悉Windows消息循环,可以从开始。它基本上是一个本机(C/C++)API,因此您必须做一些工作才能从C#使用它


我自己手头没有任何代码可以做这件事,但对于那些挂接消息循环以便处理
WM_CHAR
的人来说,这也许是一个很好的起点。

如果使用
Mouse.SetPosition
和测量偏移量对您不起作用,您需要使用XNA以外的API

您要使用的API是
WM\u INPUT
这是一条可以通过挂接消息循环接收的消息。(注意:XNA的API相当于
WM_MOUSEMOVE
,所以不要使用它。)

有一些关于API选择的介绍性详细信息,还有一些用于鼠标输入的示例代码(用C++编写)

如果您不熟悉Windows消息循环,可以从开始。它基本上是一个本机(C/C++)API,因此您必须做一些工作才能从C#使用它


我自己手头没有任何代码来做这件事,但对于那些挂接消息循环以便处理
WM_CHAR
,这也许是一个很好的起点。

我最近自己也从MouseMove怪物身上切换过来,发现这很有帮助。然而,SharpDX似乎已经在其模块中封装了大部分内容,所以这对我来说已经足够好了。除此之外,可以通过重写来钩住Windows.System.Forms的消息循环;WM_输入为消息id 0x00FF;在.NET中声明联合很棘手,需要属性。

我最近从一个MouseMove怪物身上切换过来,发现这很有帮助。然而,SharpDX似乎已经在其模块中封装了大部分内容,所以这对我来说已经足够好了。除此之外,可以通过重写来钩住Windows.System.Forms的消息循环;WM_输入为消息id 0x00FF;在.NET中声明联合很棘手,需要属性。

不,这正是我不想要的…不,这正是我不想要的。。。