Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

21.02.2004, 17:36

Ein DirectInputproblem...

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

2

22.02.2004, 13:58

Hab den Fehler gefunden...

Ich wollt nur schnell bescheid sagen das ich den Fehler gefunden hab. Ich hab das keyboard einfach nicht aktiviert (Keyboard.Acquire() ).

mfg Markus