这是我的问题。
我正在尝试从连接的设备获取原始输入。我正在使用MSDN上的信息来弄清楚,但我很难理解其中的一些。
我相信我已经成功地创建了一个RAWINPUTDEVICE对象并使用 RegisterRawInputDevices() 注册了一个设备。现在我想弄清楚如何使用 GetRawInputDeviceList() 和 GetRawInputDeviceInfo() 函数。最大的麻烦是试图理解它们采用的参数,其中包括一个 RAWINPUTDEVICELIST 对象、一个 HANDLE、一个 LPVOID 和一个 PUINT。
这些变量是什么以及如何使用它们?
这是我的工作:
头文件中的重要内容:
#include <Windows.h>
#include <Winuser.h>
CPP 文件中的重要内容:
// I do not know where I found this not what it does, but it fixed some errors
// that I could not solve. MSDN did not mention it.
#pragma comment(lib, "user32.lib")
有效的东西和无效的东西:
RAWINPUTDEVICE rid[1];
rid[0].usUsagePage = 1;
rid[0].usUsage = 6;
rid[0].dwFlags = 0;
rid[0].hwndTarget = NULL;
// awesomeSauce returned true, so it works
bool awesomeSauce = RegisterRawInputDevices(rid, 1, sizeof(RAWINPUTDEVICE) );
// Nothing past this point works
UINT numDevices = GetRawInputDeviceList(NULL, NULL, sizeof(RAWINPUTDEVICELIST));
怎么继续?
我对 C++ 有点生疏,你在这里看到的几乎是我对原始输入的知识的总和。我不知道它是否会产生任何影响,但我使用的是 C++/CLI,而不是常规的 C++。我该如何从这里获得某种无缓冲的原始输入(最好是从键盘输入)?
编辑:
我发现的大多数示例都有一个 switch 语句。我不明白它是如何工作的。我有这样的事情:
UINT msg; // How does this work?
switch(msg)
{
case WM_CREATE:
executeCase = 1;
break;
case WM_INPUT:
executeCase = 2;
break;
}
msg 变量是如何工作的?如何正确创建和分配一个?