Schleifen-Problem
-
WEBFRITZI DU BIST EINFACH EIN RIESEN A-R-S-C-H-L-O-C-H!!
-
Original erstellt von Julx5:
Und falls du überhaupt ahnung von directx prog. dann kannst du dich ja auch melden.Nein, ich habe keine Ahnung von DirectX. Aber es geht hier nicht um DirectX, sondern um WinAPI, falls du das verstehst.
ps: es ist immer wieder schön zu sehen wie immer nur unregistrierte Nutzer deine Posts bestätigen, kann es sein dass duch dich vielleicht selber immer in den foren lobst und respekt erntest, falls ja sag ich da einfach nur: armer Verlierer.
Klar lob ich mich stets selber. Eigentlich kann ich garnichts. Überleg dir nochmal, was du da schreibst. Für mich ist eines klar: In deinen Worten steckt der pure Neid.
Ach übrigens der einzige Depp bist wirklich nur du, die anderen locker über diese Thema hinweggekommen, nein aber webfritzchen kriegt es immer falsch verstanden, VERSTEHST DU überhaupt etwas??
Offensichtlich mehr als du.
pss: ich sags zum letzten Mal, halt dich doch einfach von diesem Theam fern, dies ist hier zum lernen gedacht und nicht zum streiten!
Du bist doch deiner Meinung nach der Klügere. Dann wirst du jetzt wohl nachgeben müssen.
ich hab sämtliche sachen auch deinen message-loop ausprobiert, zur zeit versuch ich das mit flenders hinzubekommen.
Wenn du genau hinschaust, dann siehst du, dass meine und flenders' Version nahezu identisch sind. Du musst einfach nur einmal in deiner while-Schleife die Zeile
ProcessMessages();
eingeben - und dein Problem ist beseitigt. Ist das denn so schwer?
-
Original erstellt von <Julx5>:
WEBFRITZI DU BIST EINFACH EIN RIESEN A-R-S-C-H-L-O-C-H!!*lol*
ICH WEISS !
-
Wenn du genau hinschaust, dann siehst du, dass meine und flenders' Version nahezu identisch sind. Du musst einfach nur einmal in deiner while-Schleife die Zeile
deine version ist auch mit flenders (wenn auch nicht ganz) identisch,
hab ich auch nichts gegen gesagt! aber es hat eben nicht geklappt, sagmal bistWEBFRITZI DU BIST EINFACH EIN RIESEN A-R-S-C-H-L-O-C-H!!
ich weiss nicht von wem diese nachricht erstellt wurde aber bestimmt steckt webfritzie wieder dahinter...
, also nicht vergessen ich bin Julx5 <junior-mitglied> und nicht Julx5<unregistriert>
-
*lol* Nein, ich war das nicht. Wie du siehst, habe ich es nicht nur mit Respekt zollenden Newbies zu tun, sondern auch mit Trollen, die versuchen lustig zu sein.
-
witzig zu sein? das war einfach nur die wahrheit. traurig aber wahr.
-
LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { static BOOL bDoLoop; ... ... if(wparam == VK_F12) { bDoLoop = TRUE; while(bDoLoop && ProcessMessages()) xxxDDraw_Puffer_wechseln(); PostMessage(hwnd, WM_CLOSE, 0,0); } if(wparam == VK_RETURN) bDoLoop = FALSE; ... ... }
-
Original erstellt von <*LUSTIG*>:
witzig zu sein? das war einfach nur die wahrheit. traurig aber wahr.Ich finds einfach nur lustig, du kleines dummes A-r-s-c-h-l-o-c-h !!!
-
Schön, dass du dich für meine Hilfe bedankst, Julx5 !
-
Schön, dass du dich für meinen Kommentar beleidigst, W-E-B-F-R-I-T-Z-I ! :o
-
ups
:p
-
*while(bDoLoop && ProcessMessages())
if(wparam == VK_F12)
{
bDoLoop = TRUE;while(bDoLoop && ProcessMessages())
xxxDDraw_Puffer_wechseln();PostMessage(hwnd, WM_CLOSE, 0,0);
}*ich glaub da hast du was mit ProcessMessages() falsch gemacht, den befehl kennt er nicht (msdn hab ich auch nichts gefunden)
-
das ist nur psycho code. ProcessMessages ist glaub ich von der VCL (Borland C++ Builder)
-
Man Julx!!! Das kann doch wirklich nicht sein! ProcessMessages() ist die Funktion, die du über die Suchfunktion findest, und an der du dich angeblich auch schon versucht hast.
-
jaja ist schon gut, hab allerdings schon ne lösung zusammen mit flenders gefunden, etwa im prinzip genau wie die von webfritzchen (halt ohne dein unbekanntes ProcessMessages;-)
also allen nochmal vie dank!
-
So geht's, wenn die Nachrichten abgeholt werden:
enum { WMU_DOTHELOOP = WM_USER + 789 }; LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { static BOOL sbLoopAnhalten = FALSE; switch(message) { case WM_DESTROY/*und andere*/: //... break; case WM_KEYDOWN: switch(wparam) { case VK_ESCAPE: case VK_RETURN: sbLoopAnhalten = TRUE; PostMessage(hwnd, WM_CLOSE, 0, 0); return 0; case VK_F12: sbLoopAnhalten = FALSE; PostMessage(hwnd, WMU_DOTHELOOP, 0, 0); return 0; }//ende sitch(wparam) break; //ende case wm_keydown case WMU_DOTHELOOP: if(!sbLoopAnhalten) { xxxDDraw_Puffer_wechseln(); PostMessage(hwnd, WMU_DOTHELOOP, 0, 0); } return 0; }//ende switch(msg) return DefWindowProc(hwnd, message, wparam, lparam); } //Ende der WindowProc
-
ja, so ist es auch ganz leicht, jedoch sollte xxx_bufferwechseln() inner endlosschleife stattfinden und von dort sollten die nachrichten abgeholt werden.
-
So geht's, wenn die Nachrichten abgeholt werden:
enum { WMU_DOTHELOOP = WM_USER + 789 }; LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { static BOOL sbLoopAnhalten = FALSE; switch(message) { case WM_DESTROY/*und andere*/: //... break; case WM_KEYDOWN: switch(wparam) { case VK_ESCAPE: case VK_RETURN: sbLoopAnhalten = TRUE; PostMessage(hwnd, WM_CLOSE, 0, 0); return 0; case VK_F12: sbLoopAnhalten = FALSE; PostMessage(hwnd, WMU_DOTHELOOP, 0, 0); return 0; }//ende sitch(wparam) break; //ende case wm_keydown case WMU_DOTHELOOP: if(!sbLoopAnhalten) { xxxDDraw_Puffer_wechseln(); PostMessage(hwnd, WMU_DOTHELOOP, 0, 0); } return 0; }//ende switch(msg) return DefWindowProc(hwnd, message, wparam, lparam); } //Ende der WindowProc
-
Du läßt durch PostMessage(..., WMU_DOTHELOOP, ...) sowohl die Endlosschleife als auch die Nachrichtenabholung von Windows machen!
Hoffe, das hilft?!?!
-
Ich denke, das ist kein guter Ansatz, denn so ist die "Endlos"-Schleife von der Message-Queue abhängig, und die kann u.U. recht langsam sein. Um sich ganz von der Message-Queue abzuseilen, könnte ein neuer Thread auch eine gute Möglichkeit sein.