gpt4 book ai didi

c++ - 原始鼠标输入的解释

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:35 25 4
gpt4 key购买 nike

我最近开始阅读 Beginning DirectX 11 Programming(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;
}

Mouse movement with WM_INPUT 中所述(文章也适用于非高清)。该文章还包含 WM_MOUSEMOVE 示例。

关于c++ - 原始鼠标输入的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17496703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com