DirectInput8 kann nicht initalisiert werden :(



  • Hmm... jetzt müsste man noch wissen, wie man so nen 'HRESULT' auswertet, was? 😉

    Aber den Rest kann ich jetzt schon ausprobieren *freu*.

    thx & cu 🙂



  • HRESULT hr = DirectInput8Create(...);

    switch(hr)
    {
    case DI_OK:
    ...
    break;
    case DIERR_BETADIRECTINPUTVERSION:
    ...
    break;
    case DIERR_INVALIDPARAM:
    ...
    break;
    case DIERR_OLDDIRECTINPUTVERSION:
    ...
    break;
    case DIERR_OUTOFMEMORY:
    ...
    break;
    }

    Da war ich wohl zu langsam 😞

    [ Dieser Beitrag wurde am 06.01.2003 um 19:49 Uhr von flenders editiert. ]



  • So hab ich's jetzt:

    HRESULT hResult = DirectInput8Create(hInstance,DIRECTINPUT_VERSION,IID_IDirectInput8,(void **) &m_lpDI,0);
        if(hResult == DIERR_OLDDIRECTINPUTVERSION)
        {
            throw TEXT("OLDDIRECTINPUTVERSION");
        }
        else if(hResult == DIERR_INVALIDPARAM)
        {
            throw TEXT("INVALIDPARAM");
        }
        else if(hResult == DIERR_OUTOFMEMORY)
        {
            throw TEXT("OUTOFMEMORY");
        }
        else if(hResult == DIERR_BETADIRECTINPUTVERSION)
        {
            throw TEXT("BETADIRECTINPUTVERSION");
        }
        else
        {
            throw TEXT("Nix gefunden...");
        }
    

    Es wird aber immer "Nix gefunden..." ausgegeben...

    @ChrisM: Funktioniert bei mir nicht, ich kann da nix umstellen.
    @flenders: Hat auch nicht funktioniert.

    cya 🙂



  • Teste mal noch auf DI_OK!



  • HRESULT hResult = DirectInput8Create(hInstance,DIRECTINPUT_VERSION,IID_IDirectInput8,(void **) &m_lpDI,0);
        if(hResult == DIERR_OLDDIRECTINPUTVERSION)
        {
            throw TEXT("OLDDIRECTINPUTVERSION");
        }
        else if(hResult == DIERR_INVALIDPARAM)
        {
            throw TEXT("INVALIDPARAM");
        }
        else if(hResult == DIERR_OUTOFMEMORY)
        {
            throw TEXT("OUTOFMEMORY");
        }
        else if(hResult == DIERR_BETADIRECTINPUTVERSION)
        {
            throw TEXT("BETADIRECTINPUTVERSION");
        }
        else if(hResult == DI_OK)
        {
            throw TEXT("OK");
        }
        else
        {
            throw TEXT("Nix gefunden...");
        }
    

    Auch "Nix gefunden...". Das ist ja dann ein Fehler, den es gar nicht gibt, oder was ;)? In meiner DX-Doku stehen nur die oben genannten Möglichkeiten für HRESULT bei DirectInput8Create...

    cya 🙂



  • Ich meine, vieleicht wenn du willst ich habe ne klasse für DirectInput geschrieben, allerdings mit Version 7. läuft aber natürlich auch mit 8. Wenn willst gebe ich sie dir mal.



  • @xyz44: Ne, brauchst du nicht. Ich möchte eigentlich nur wissen, warum das nicht geht :).

    cya 🙂



  • Hast du bei der Version schon mal NULL statt 0 ausprobiert? (man kann ja nie wissen 🙄 )



  • Das geht auch nicht... :heul:

    thx & cya 🙂



  • Ist vielleich dein hInstance in der Funktion nicht gültig, oder sowas?
    Hast du schonmal probiert die Funktion aus deiner Memberfunktion rauszunehmen und direkt in WinMain zu setzen?

    [ Dieser Beitrag wurde am 06.01.2003 um 20:41 Uhr von flenders editiert. ]



  • Funktionieren denn die DirectInput-Beispielprogramme aus dem DirectX-SDK?



  • @flenders: hInstance ist gültig, bin da mit'm Debugger schon mal drübergefahren.
    @ThomasRiker: Einen Moment bitte, ich probier's mal aus....

    cya 🙂



  • Die Beispiele aus dem SDK funktionieren, ich hab's dann auch mal GetModuleHandle(0) probiert, auch mit GetModuleHandle(NULL), hat aber auch nicht funktioniert, liegt also nicht an der Instance.

    thx & cya 🙂



  • Du hast aber nicht DirectX 9.0 draufgemacht, oder?



  • Nein, bin noch ein treuer Anhänger von DirectX 8. 😃

    cya 🙂



  • Hat noch irgendjemand irgendeine Idee?

    cya 🙂



  • Stelle DirectInput mal in der Systemsteuerung unter "DirectX" auf "Debug" und lasse dann mal das Programm NUR mit F5 laufen (bei MSVC++ ist das der Debugmodus). Dann schau mal, was die Debugausgabe sagt. Das ist sicher irgendein total blöder Fehler...



  • Dann muss ich jetzt mein SDK neu installieren, weil ich nur die Retail-Version drauf hab...

    cya 🙂



  • Ich hab da nix umstellen können, auch nach einem Neustart nicht. Wenn ich das ganze mal im Debug-Modus laufen lasse, spuckt er mir das aus, vielleicht könnt ihr was damit anfangen, ich kann's nicht 😞 :

    Loaded 'ntdll.dll', no matching symbolic information found.
    Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
    Loaded 'C:\WINDOWS\system32\user32.dll', no matching symbolic information found.
    Loaded 'C:\WINDOWS\system32\gdi32.dll', no matching symbolic information found.
    Loaded 'C:\WINDOWS\system32\advapi32.dll', no matching symbolic information found.
    Loaded 'C:\WINDOWS\system32\rpcrt4.dll', no matching symbolic information found.
    Loaded 'C:\WINDOWS\system32\d3d8.dll', no matching symbolic information found.
    Loaded 'C:\WINDOWS\system32\d3d8thk.dll', no matching symbolic information found.
    Loaded 'C:\WINDOWS\system32\msvcrt.dll', no matching symbolic information found.
    Loaded 'C:\WINDOWS\system32\version.dll', no matching symbolic information found.
    Loaded 'C:\WINDOWS\system32\dinput8.dll', no matching symbolic information found.
    Loaded 'C:\Programme\Microsoft Hardware\Mouse\Msh_zwf.dll', no matching symbolic information found.
    First-chance exception in mcGraphics.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception.
    The thread 0xB5C has exited with code -858993460 (0xCCCCCCCC).
    The program 'D:\MagiC Creating\MyProjects\mcGraphics\Debug\mcGraphics.exe' has exited with code -858993460 (0xCCCCCCCC).

    thx & cya 🙂



  • Aaarrggg! Ich hab den Fehler gefunden... es lag gar nicht an dem Aufruf!!! Sorry, dass ich euch belästigt hab *schäm*. Was so ein kleines '!' am falschen Ort so ausmachen kann... 😞

    Vielleicht könnte mir noch trotzdem jemand sagen, ob die Debug-Version wirklich langsamer ist als die Retail-Version, wär nett :), auch wenn ich so böse war ;).

    thx & cya 🙂


Anmelden zum Antworten