so das habe ich ja jetzt.
Jetzt wollte ich die Klasse Tastatur noch um eine Eingabemethode erweitern, die prüft, ob ESCAPE gedrückt wurde.
Da kommt es aber wieder zu einer Speicherstapelung...
also hier die Erweitrung:
NC_DI_Init.cpp
|
Quellcode
|
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
31
32
33
34
|
// ...
int Tastatur::Tastatur_Eingabe(LPDIRECTINPUTDEVICE8 lpDIGeraet)
{
hr = lpDIGeraet->GetDeviceState(sizeof(Key_Buffer), (LPVOID) &Key_Buffer);
if (hr != DI_OK)
{
if (hr == DIERR_INPUTLOST)
{
if (lpDIGeraet)
{
lpDIGeraet->Acquire();
hr = lpDIGeraet->GetDeviceState(sizeof(Key_Buffer), (LPVOID) &Key_Buffer);
if (hr != DI_OK)
{
MessageBox(NULL, "Alles vorbei!", "Mist", MB_OK);
}
}
}
else
{
MessageBox(NULL, "Fehler", "Mist", MB_OK);
}
}
if (Key_Buffer[DIK_ESCAPE] & 0x80)
{
MessageBox(NULL, "Das hat geklappt", "Ok", MB_OK);
// PostQuitMessage(0);
return 1;
}
return 1;
}
|
NC_DI_Init.h
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
|
class Tastatur
{
private:
char Key_Buffer[256];
public:
int Tastatur_Init(LPDIRECTINPUT8 lpDI, LPDIRECTINPUTDEVICE8 lpDIGeraet, HWND hwnd);
int Tastatur_Eingabe(LPDIRECTINPUTDEVICE8 lpDIGeraet);
};
|
NC_DI_main.cpp
|
Quellcode
|
1
2
3
4
5
|
//..
Device.DI_Init_general(hinst);
Keyboard.Tastatur_Init(Device.lpDI, Device.lpDIGeraet, hwnd);
Keyboard.Tastatur_Eingabe(Device.lpDIGeraet);
//..
|