Maus Eingabe Problem/Compiler



  • Hi!
    Ich bin neu in diesem Forum und hab ein ziemliches Problem:
    Ich bin gerade dabei, den Quelltext aus dem Buch "3D Spieleprogrammierung mit Direct X 7 in C/C++".
    Bis jetzt lief auch alles gut, bis Ich zum "DirectInput" Kapital kam. Ich hab alle nötigen Header und Lib's gelinkt, bekomme aber trotzdem immer folgenden Fehler bei dem Quellcodeausschnitt heraus:

    DIDEVICEOBJECTDATA md;
    // Feld "dwOfs" enthält Maus Aktionen
    switch (md.dwOfs) {
    // Horizontale Bewegung
    case DIMOFS_X:
    Maus_x += md.dwData;
    bFertig = TRUE;
    break;
    // Vertkale Richtung
    case DIMOFS_Y:
    Maus_y += md.dwData;
    bFertig = TRUE;
    break;
    // Knopf 0 gedrückt
    case DIMOFS_BUTTON0:
    // Knopf gedrückt
    if (md.dwData & 0x80) {
    bMaus_Buttons[0] = TRUE;
    bFertig = TRUE; }
    // Knopf losgelassen
    else {
    bMaus_Buttons[0] = FALSE;
    bFertig = TRUE; }
    break;
    case DIMOFS_BUTTON1:
    // Knopf gedrückt
    if (md.dwData & 0x80) {
    bMaus_Buttons[1] = TRUE;
    bFertig = TRUE; }
    // Knopf losgelassen
    else {
    bMaus_Buttons[1] = FALSE;
    bFertig = TRUE; }
    break;
    }; // SWITCH

    Also hier die Fehlermeldung:
    "error: a cast to a type other than an integral or enumeration type cannot appear in a constant-expression."
    Und die krieg ich bei jeder "case" Anwendung. Im Internet hab Ich gelesen, dass das ein Compiler Bug bei dem GNU GCC Compiler war. Also hab Ich ne neuere Version installiert...Das Problem blieb aber! 😞
    Gibt es andere Compiler dafür, oder eine elegantere Lösung dafür?
    Ich benutze CodeBlocks 10.05 für C++.
    Hoffe, Ihr könnt mir helfen!
    Gruß Christoph W



  • du steigerst deine Chancen eine Antwort zu erhalten, wenn du deinen Code zu etwas lesbarem formatierst und code tags benutzt!



  • Sorry, aber Ich hab das eigentlich formatiert, nur im Post wars plötzlich weg 😕



  • DirectX 7 ist hoffnugnslos veraltet. Nur damit du ein Gefühl dafür bekommst wie veraltet es ist: Es war schon vor 10 Jahren veraltet...
    DirectInput ist deprecated. Verwend einfach die Windows Messages (WM_MOUSEMOVE etc.)



  • Hi! Im Buch braucht man es für die Beispielprogramme und Direct X nutzt die Hardware Beschleunigung. Ich bin mir auch sicher, das Direct X 7 für meine Zwecke reicht, ich werde sowieso nie ein Spiel erstellen, was alle Funktionen von DX7 benutzt, geschweigedenn DX9 oder DX11.
    Aber helft mir doch lieber bei meinem Problem und macht mir keine Vorschläge für eine andere Engine(nicht böse gemeint, aber Ich würds gerne ma benutzen).
    Gruß
    Christoph



  • DirectX ist keine Engine und DirectX 7 zu lernen würde dir mehr schaden als nutzen. Mit was Älterem als DirectX 9 solltest du auf keinen Fall anfangen. Das hat nichts damit zu tun wieviel der Funktionalität du brauchst. Du würdest heute auch nicht mehr für Windows 1.0 entwickeln, auch wenn es von der Funktionalität vielleicht ausreichen würde...

    DirectX 7 wird auf modernen Betriebssystemen und von moderner Hardware weder unterstützt, noch hat es irgendwas damit zu tun wie die Dinge heute gemacht werden. Daher hat es auch keinen Sinn was damit anzufangen.



  • Warum schlagt ihr mir ständig neue Vorschläge gegenüber DX7 vor? Ich hab doch nach einer Lösung des Problems gesucht und nicht nach Vorschlägen, welche DX Version Ich nehmen sollte...
    Das würde echt helfen! Bitte!
    Und die DX7 Programme werden sehr wohl unterstützt, wegen der Abwertskompatibilität? Oder? Bis jetzt ham die DirectDraw7 Programme allesamt gefunzt!


Anmelden zum Antworten