Was mach ich hier falsch???
-
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