原始鼠标输入的解释
Interpretation of raw mouse input
我最近开始阅读《开始DirectX 11编程》(Allen Sherrod,Wendy Jones),偶然发现了一个关于输入的问题。这本书只教我如何使用Win32、DirectInput和XInput进行输入处理。然而,经过一点研究,我意识到我应该使用RawInput进行输入处理。这就是问题产生的地方。
我已经设法使我的应用程序能够接收原始鼠标输入。我想问你们的问题是:我如何解释原始鼠标数据并在游戏中使用它,类似于你们如何使用WM_MOUSEMOVE?
编辑:很抱歉我把自己表述得很糟糕。我想知道鼠标指针在应用程序屏幕中的位置,但不了解鼠标原始输入的值。(mX,mY)
case WM_INPUT:
{
UINT bufferSize;
GetRawInputData((HRAWINPUT)lParam, RID_INPUT, NULL, &bufferSize, sizeof(RAWINPUTHEADER));
BYTE *buffer = new BYTE[bufferSize];
GetRawInputData((HRAWINPUT)lParam, RID_INPUT, (LPVOID)buffer, &bufferSize, sizeof(RAWINPUTHEADER));
RAWINPUT *raw = (RAWINPUT*) buffer;
if ( raw->header.dwType == RIM_TYPEMOUSE)
{
long mX = raw->data.mouse.lLastX;
long mY = raw->data.mouse.lLastY;
}
}
你可以通过这样做来实现这一点:
case WM_INPUT:
{
UINT dwSize = 40;
static BYTE lpb[40];
GetRawInputData((HRAWINPUT)lParam, RID_INPUT,
lpb, &dwSize, sizeof(RAWINPUTHEADER));
RAWINPUT* raw = (RAWINPUT*)lpb;
if (raw->header.dwType == RIM_TYPEMOUSE)
{
int xPosRelative = raw->data.mouse.lLastX;
int yPosRelative = raw->data.mouse.lLastY;
}
break;
}
正如WM_INPUT的鼠标移动中所提到的(文章也适用于非高清)。本文还包含一个WM_MOUSEMOVE的示例。
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- 请解释"函数1(p1,p2,p3);"的输出
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 有人可以在 c++ 中解释数组的这种输入
- 有人可以解释我这个代码吗?它给出与我们输入的数字相反
- 位集<10>和位集<2>(输入[i])的差异,需要解释
- 函数以相反的顺序输出输入问题,并改进算法以解释相等的数字
- 有人可以向我解释一下这段代码是如何工作的吗?(程序在预期数值且用户输入其他输入时再次要求用户输入)
- 将狭窄的输入流重新解释为宽(WCHAR_T)流
- 如何将输入与文件中的内容相匹配?我需要一个更好的解释
- OpenMVG mainComputeMatches.cpp输入解释
- 解释当整数作为输入时输出
- 原始鼠标输入的解释
- 矩阵输入和输入的解释