Also wenn ich überprüfe will, ob eine Pfeiltaste losgelassen wurde, funkioniert das nicht, da kein RI_KEY_BREK Flag gesetzt wird. Bei w,a,s,d funktioniert es einwandfrei.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
if(GetRawInputBuffer(NULL, &mSize, sizeof(RAWINPUTHEADER)) != 0)
return;
if(mSize == 0)
{
GetRawInputData((HRAWINPUT)mLParam, RID_INPUT, NULL, &mSize, sizeof(RAWINPUTHEADER));
BYTE* inputBuffer = new BYTE[mSize];
if (GetRawInputData((HRAWINPUT)mLParam, RID_INPUT, inputBuffer, &mSize, sizeof(RAWINPUTHEADER)) != mSize)
Log::getInstance()->log(_T("Fehler beim Einlesen der Eingabe!"), WARNING);
RAWINPUT* buffer = (RAWINPUT*)inputBuffer;
mInput = *buffer;
if (mInput.header.dwType == RIM_TYPEKEYBOARD)
{
if(mInput.data.keyboard.Flags == RI_KEY_BREAK)
mKeys[mInput.data.keyboard.VKey] = false;
else
mKeys[mInput.data.keyboard.VKey] = true;
}
else if (mInput.header.dwType == RIM_TYPEMOUSE)
{
mX = mInput.data.mouse.lLastX;
mY = mInput.data.mouse.lLastY;
}
delete[] inputBuffer;
}
|
Dieser Code wird aus der WM_INPUT Message als Thread gestartet. Für den Input lasse ich ein unsichtbares Fenster erstellen.
Kennt sich da jemand genauer aus?