Was mach ich hier falsch???
-
ja das hab auch schon gehört das man macros nicht einsetzten sollte aber ich kannte diese GetAssyncKey Funktion noch nicht. Wo kann denn der fehler sonst liegen? Kann es sein das das fenster sofort geschlossen wird weil ich ja eigentlich noch nichts in der Schleife mache ausser auf ESC zu warten?
-
Der Ausdruck :
if ( GetAsyncKeyState( VK_ESCAPE ))ergibt immer true.
Wenn die taste gedrückt ist dann gibt GetAsyncKeyState( VK_ESCAPE ) 0x8000 zurück
-> das programm wird beendet.
Wenn die taste nicht gedrückt ist dann gibt GetAsyncKeyState( VK_ESCAPE ) 0x0001 zurück
-> das programm wird beendet.
Es wird also auf jeden Fall beendet.
Kurt
-
Deswegen macht man ja noch das & 0x8000

-
Ich habs auch schon ausprobiert aber der Fehler muss irgendwo anders liegen
Ich hab jetzt das ganze mit der ESC Taste entfernt - aber das fenster schließt trotzdem
-
Hi,
aber das fenster schließt trotzdem
Kein Wunder! Nachdem du das Fenster erstellst gehst du mit return (0); aus dem Programm raus. Er kommt gar nicht erst zur Schleife!
if (! (hwnd = CreateWindowEx (0, WINDOW_CLASS_NAME, "MyGameShell", WS_POPUPWINDOW | WS_VISIBLE, 0,0, 1024,768, 0, 0, hinstance, 0))); //Das return (0) muss da weg //return (0); mainWindowHandle =hwnd;Ciao,
Feuerwerker
-
das return 0 gehört zur If-Abfrage, also wenn das Fenster nicht erstellt wurde wird es beendet.
Ist nur schwer zu erkennen, weil seine Code-Formatierung unschön ist
-
na dann haben wir den Fehler ja gefunden
0)));Ein Semicolon zu viel.
Kurt
-
Nein, es gehört nicht zur if-Abfrage, da er keine geschweiften Klammern benutzt.
Folge: das Programm wird beendet.
Also, müssen da geschweifte Klammern hin!
-
Alles zurück, war Quatsch, ich hab übersehen, das CreateWindowEx in der if-Abfrage steckt, ZuK hat Recht.
-
if ( GetAsyncKeyState( VK_ESCAPE ) & 0x8000 )
-
Hey Danke das hat geklappt ich hab einfach das return 0 weg gemacht und siehe da ein weißes Fenster

Aber ich hab nicht ganz verstanden warum es weg muss da der nach dem return 0 erst dann fragt wenn die if anweisung FALSE liefert oder????
-
Es muss nicht das return 0 weg sondern das semicolon.
Kurt
-
aha ja habs verstanden klappt auch danke noch mal