Schleifen-Problem



  • Hi
    ich überlegt ob ich dies nicht ins c++ for. erstellen soll, das Programm wird verwendet die aber die winapi und die WNDProc, daher wär es schlecht mir DosKonselentipps zu posten.

    Viele kennen von euch das Problem, das bei while EndlosSchleifen existiert, man kommt nicht immer wieder so einfach heraus.

    Im folgeneden Quelltext in der WndProc Funkt. soll nach Drücken der f12 taste laufend ne Funtion ausführen (isn directdraw das pixel vom backbuffer ins prim. flipt, aber das ist jetzt egal). Falls ich aber return drücke soll er von der schleife wieder rauskommen, tut er aber nicht. Er führt immer noch die Funtion wiederholend aus ohne Ende.

    ---------Programmauschnitt:---------------------------------------

    LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, 
                                LPARAM lparam)
       {
       switch(message)
           {    
           case WM_DESTROY: 
               {
             done = TRUE;
             PostQuitMessage(0);
             return 0;
               } break;
    
          case WM_KEYDOWN:
              {
             switch (wparam)
                {
                case VK_ESCAPE:
                   {
                   PostMessage(hwnd, WM_CLOSE, 0, 0);
                   return 0;
                   } break;
    
                }//ende sitch(wparam) 
    
                     if (wparam == VK_F12)
                     {
    
                         while (wparam != VK_RETURN)
                         {
    
                             xxxDDraw_Puffer_wechseln();
                         }
                         PostMessage(hwnd, WM_CLOSE, 0,0);
    
                     }
    
              }   //ende case wm_keydown 
          } //ende oberswitch
       return (DefWindowProc(hwnd, message, wparam, lparam));
       } // Ende derWindowProc
    

    ----------------------------------------------------------

    Nachdem ich return drücke, sollte die while übersprungen werden und WM_CLOSE
    losgeschickt werde, FUNZT aber nicht! er bleibt in der schleife und führ brav
    xxxDDraw_Puffer_wechseln() aus. Könnt ihr mir vielleicht weiterhelfen?
    Für die die daran Bastlen wollen werde ich gern den gesamten quelltext zuschicken (emailadi nicht vergessen). Ihr müsstet aber nich ddraw.lib und dxguid.lib dazulinken (ist im dx8-sdk vorhanden, wenn ihr den nicht habt dann schick ich die natürlich auch...)

    Danke schon mal im Voraus !-



  • Du musst in der while-Schleife deine Messages auch abholen ;). Woher soll dein Programm denn wissen, dass Return gedrückt wurde ;)?

    cya 🙂



  • @Magic Creator and all other experts:
    -messages abholen-

    jaaaaaaa toll! daran hab ich aber schon gedacht. (die gesamte winmain ist perfekt!) konzentriert euch bitte nur auf den quelltextausschnitt! Der Rest ist
    schon perfekt!(also es werden schon alle messages aufgenommen und weiterverarbeitet!)

    ... das problem ist wirklich nicht klein (aber vieleicht werd eines besseren belehrt!...)



  • Ja schon klar... du musst die Messages in deiner while-Schleife auch abholen, nicht _nur_ in der WinMain! Denn wenn du in der while-Schleife bist, dann werden die Messages in der WinMain _nicht_ abgeholt.

    cya 🙂



  • also es werden schon alle messages aufgenommen und weiterverarbeitet!

    *lol* Klar. Während sich das Programm in der WindowProc rumtummelt, kommen andauernd neue Nachrichten an. Die sagen dann hallo und laufen vorbei. Winken noch schnell bevor sie von der DefWindowProc aufgefressen werden.



  • ok, ich werds versuchen!
    danke an euch auch an dich WebFritzi (obwohl ich schon witzigere und beispielhaftere Beschreibungen bekommen habe 🙂 )



  • wie kann ich den die messages in der while einbauen (mit getMessage?). weiss das jemand wie das geht?



  • Original erstellt von Julx5:
    mit getMessage?

    Gute Idee, würd ich sagen.



  • ja vielleich aber auch nicht!
    kann mir einer sagen wie das genau geht (eingetippt wird)
    bitte ich brauch wirklich nicht halbe sätze..



  • Jetzt reichts aber, man!!! Wenn du fertige Lösungen willst, dann geh woanders hin! 😡 Schau dir zum Teufel nochmal die Doku in der MSDN an. Dann wirst du schon kapieren, wie's geht.

    bitte ich brauch wirklich nicht halbe sätze..

    Das ist echt der Gipfel der Unverschämtheit! Sei froh, dass sich überhaupt jemand mit deinem blöden Thema beschäftigt.



  • @webfritzie

    jetzt pass du aber mal auf! einfach in die msdn doku reinschauen hilft auch nichts mit getmessage alleine fntioniert das teil immer noch nicht! (auch wenn der compiler keine fehler meldet!) und wenn das dir zum gipgel wird dann kannst du dich eben von diesem thema fernhalten (du wirst es nicht glaubenm aber nicht alle themen sind an dich gerichtet...) ich habe es oft versucht mit getmessage und bin nunmal nicht weitergekommen.

    ...Und wenn hier etwas blöd ist, dann abe deine Homepage (das sind ja selbst die ausm baukasten besser 😃 )

    Also wer mir hier helfen kann, würde es mich freuen.
    Und du webfritzie hälst dich einfach von dem thema fern wenn dir zu blöd ist.



  • Wird in deinem Buch dazu nicht die sog. GameLoop verwendet, also in WinMain eine Endlosschleife mit if(PeekMessage(...)) und so? Und wenn grad keine Message da ist wird halt gezeichnet 😉
    Dass kannst du einfach in deiner WindowProc bei F12 eine globale Variable auf true setzen und bei Return auf false. In Abhängigkeit von dieser zeichnest du in der GameLoop was, oder halt eben net!



  • @Julx5: Nicht das Thema ist mir zu doof, sondern deine Art, mit den Forenmitgliedern (u.a. mit mir) umzugehen. Dies ist ein Forum, indem der Poster etwas lernen soll. Und das tut er nicht, wenn er vorgefertigten Code bekommt, sondern indem er/sie in die Dokus/Homepages schaut, die ihm/ihr von den anderen gepostet werden.
    Es gibt hier übrigens auch eine Suchfunktion, die dir sicher weiterhelfen könnte. Such mal nach "Message-Loop".

    OT: Der Stil meiner Homepage ist mir scheißegal. Hauptsache, man kann da gute Sachen runterladen. Das ist der einzige Sinn und Zweck meiner HP.



  • Ja, aber du bietest doch garkeine guten Sachen an. 🙄



  • Ne, hast recht. Nicht für dich, da du keine Ahnung hast und ziemlich dumm bist.



  • War'n Scherz, wollte bloß wieder beleidigt werden. :p 🕶 🙂



  • *lol* Dann war er gut. 😃



  • @webfritzie

    dann pass noch mal auf, jetzt aber wirjklich mal für dich:
    1.
    die doku hab ich mir reingezogen und auch mit magiccreator hab ich außer des forums darüber gesprochen. Da kam nun mal kein compiler Fehler, aber es funzt eben nicht, verlässt die schleife nicht so wie ich es mir gewünscht habe.
    2.
    ich hab nciht erwartet dass ihr mein ganzes Programm neu aufschreiben solltet, aber der teil in der while schleife, könnte vorgemacht werden, von denen die natürlcih ahnung davon haben. DANN PASST es mir eben überhaupt nich wenn Leute wie Du einfach nur schau da schau hier schreiben um hauptsache soviele posts wie möglich abends zu machen. Bisschen wäre eben das richtige in dieser Situation.

    kleiner tipp nebenbei: wenn du schon sagt, dir sei das design deiner seite egal, dann glaub ich auch nicht dass sie jemals nen anderen anziehen oder interessieren wird. (Wenn nunmal die startseite nicht gut aussieht, dann denkt jeder Normale eben auch ob der rest so ist...)



  • Deine Seite ist noch viel schlimmer. 😡



  • DANN PASST es mir eben überhaupt nich wenn Leute wie Du einfach nur schau da schau hier schreiben um hauptsache soviele posts wie möglich abends zu machen.

    Ich glaube, das habe ich nicht nötig. Ich schreibe das um zu helfen. Aber da das bei dir auf taube Ohren stößt und du partout nicht einsehen willst, dass du verdammt unverschämt bist, werde ich dir deine Fragen nicht mehr beantworten. Ganz einfach. Such dir nen anderen Deppen, der dir den Code zeigt.

    Zur HP: Ich will ja auch keine NORMALEN damit anziehen, sondern Programmierer. Und die interessieren sich wohl dafür - ob du es glaubst oder nicht.


Anmelden zum Antworten