我最近开始阅读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;
}
}