Problem bei Joystickabfrage
-
Hallo,
ich versuche zur Zeit einen Joystick abzufragen.
Ich benutze hierbei eine Win32-Konsolenanwendung (da ich auf ein bestehendes Projekt aufbauen muss.)Ich habe nun ein "Versuchs"-Projekt indem ich mich nur um das Auselesen gekümmert habe, welches auch nun funktioniert. Es wird Text ausgegeben in welche Richtung sich der Joystick bewegt. Nun wollte ich das ganze in das bestehendes Projekt einbinden. Leider funktioniert schon das Erstellen des DirectInput8-Objektes nicht mehr. Hier mal der Code :
bool KI::InitJoystick() { HRESULT hResult; hResult = DirectInput8Create(hInstance, 0x0800, IID_IDirectInput8, (void**)(&g_pDInput), NULL); //Zur Abfrage eingefügt if(hResult == DIERR_OLDDIRECTINPUTVERSION) { printf("OLDDIRECTINPUTVERSION"); } else if(hResult == DIERR_OUTOFMEMORY) { printf("OUTOFMEMORY"); } else if(hResult == DIERR_BETADIRECTINPUTVERSION) { printf("BETADIRECTINPUTVERSION"); } else if(hResult == DI_OK) { printf("OK"); } else if(hResult == DIERR_INVALIDPARAM) { printf("INVALIDPARAM"); } else { printf("Nix gefunden..."); }
Diese Abfrage gibt mir nun "INVALIDPARAM" aus. Mir ist schon klar, dass dies auf einen falschen Parameter hindeutet...aber wo
Diese Variablen habe ich global definiert bzw. die vorahnden Bibliotheken:
#include "KI.h" #include <initguid.h> #include <DInput.h> #include <stdio.h> #include "windows.h" // Globale Variablen LPDIRECTINPUT8 g_pDInput; // IDirectInput8-Objekt LPDIRECTINPUTDEVICE8 g_pJoystick = NULL; // Schnittstelle des Joysticks GUID JoystickGUID; // GUID des verwendeten Joysticks HINSTANCE hInstance = GetModuleHandle(NULL); HWND hDlg;
Unter den Projekteigenschaften habe ich noch folgende Libs gelinkt :
dinput8.lib dxguid.lib kernel32.lib user32.libHabe ich irgendetwas elementares vergessen???
Vielen Dank schonmal!
-
hResult = DirectInput8Create(GetModuleHandle( NULL ), 0x0800, IID_IDirectInput8, (void**)(&g_pDInput), NULL);
Das geht bei mir.
-
Darf ich mal fragen wieso ich immer überall im Spiele/Grafik Forum so ellen lange IF-ELSE sachen seche? Hat das nen Grund? Y kein switch?
-
@Dark Shadow44
Vielen Dank, funktioniert jetzt wunderbar. Kannst du mir vllt noch erklären warum so und nicht anders@Priest
Keine Ahnung, bin ja auch kein "Spieleprogrammierer"Interessiere mich (momentan) nur für Steuerung. Habe solch eine Abfrage in einem Forum entdeckt und zu meinenen Zwecken modifiziert.
-
PRIEST schrieb:
Darf ich mal fragen wieso ich immer überall im Spiele/Grafik Forum so ellen lange IF-ELSE sachen seche? Hat das nen Grund? Y kein switch?
Naja da kann man noch viel aussetzen wenn man mal anfängt...
Wieso nicht überhaupt in eine Funktion auslagern?
Und wieso mit hr == auf DI_OK testen, und nicht SUCCEEDED(hr) nehmen?
Und wieso nicht als erstes auf SUCCEEDED(hr) testen und dann erst auf Fehler?
usw.