Hallo
Ich habe zur Zeit bei meinem neuen Programm ein Problem mit Direct Input.
|
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
|
int DirectInput::Init() {
//Erst mal das Device erstellen...
if ( FAILED (DirectInput8Create(hInst, 0x0800, IID_IDirectInput8, (void**)&DirectInputDevice, NULL) )) {
return FEHLER;
}//if
///DAS KEYBOARD///
//Und jetzt das KeyboardDevice
if (FAILED(DirectInputDevice->CreateDevice(GUID_SysKeyboard, &Keyboard, NULL))) {
return FEHLER;
}
//Das Format angeben...
if ( FAILED (Keyboard->SetDataFormat(&c_dfDIKeyboard) )) {
return FEHLER;
}//if
//Das CooperativeLevel setzen...
if ( FAILED ( Keyboard->SetCooperativeLevel(hwnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE) )) {
return FEHLER;
}//if
return OK;
}//Init DirectInput
|
Das ist erst mal meine Init-Methode. Hier gibt es noch keinen Fehler...
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
int DirectInput::Refresh() {
BYTE akeys[256];
HRESULT r = Keyboard->GetDeviceState(256, akeys) ;
if (r == DIERR_INPUTLOST) {
//Zugriff verloren...
Keyboard->Acquire();
}//GetDeviceState
if ( FAILED ( r )) { //HIER SPRINGT ER IMMER REIN AUCH WENN DAS FENSTER AKTIV IST!!!
//Wahrscheilich ist das Fenster nicht aktiv...
return WARNUNG;
}//if
return OK;
}//Refresh
|
Wenn ich allerdings refreshe, auch wenn ich den Focus auf dem Fenster ist, ist die Variable r immer -2.76....(also Fehlerhaft)!!
Könnt ihr mir da weiter helfen. Ich such such schon seit längerem den Fehler...
Das Compilieren verläuft fehlerfrei.
mfg Markus