Announcement

Collapse
No announcement yet.

Windows-Messages während langer Berechnung abarbeiten?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Windows-Messages während langer Berechnung abarbeiten?

    Ich suche das MFC-Äquivalent zu Application.ProcessMessages in
    Delphi oder DoEvents in VB -- also eine Funktion, die es mir erlaubt,
    während langer Berechnungen/Schleifen zwischendurch mal
    Windows-Messages abzuarbeiten, um z.B. das GUI einigermaßen
    am Leben zu erhalten. Kann mir jemand auf die Sprünge helfen?
    <p>Danke für eure Antworten,
    <br>Uli.

  • #2
    Hallo, <br>
    <br>
    in VC ist ein kleines bischen mehr arbeit notwendig als in Delphi oder VB! Hier ist ein kleines Beispiel:<br>
    <br>
    <pre>
    MSG msg;

    if( PeekMessage( &msg, m_pOwner, 0, 0, PM_REMOVE ) )
    {
    TranslateMessage( &msg );
    DispatchMessage( &msg );
    }
    </pre>
    <br>
    Mit PeekMessage holt man sich die nächste anligende Message, diese wird dann mit TranslateMessage in die Standard Message Loop weitergeleitet und mit DispatchMessage aus der Messagequeue entfernt. <br>
    <br>
    mfg<br>
    Simon Rot

    Comment


    • #3
      Hallo,<br>
      <br>
      in VC ist ein kleines bischen mehr arbeit notwendig als in Delphi oder VB! Hier ist ein kleines Beispiel:<br>
      <br>
      <pre>
      MSG msg;
      if( PeekMessage( &msg, m_pOwner, 0, 0, PM_REMOVE ) )
      {
      TranslateMessage( &msg );
      DispatchMessage( &msg );
      }
      </pre>
      <br>
      Mit PeekMessage holt man sich die nächste anligende Message( PM_REMOVE löscht die Nachricht aus der MessageQueue) , diese wird dann mit TranslateMessage in VirtualKeyCode übersetzt(falls nötig) und mit DispatchMessage weitergeleitet.
      <br>
      mfg<br>
      Simon Rot

      Comment


      • #4
        Salve Ulrich,
        starte doch die großen Berechnungen in einem eigenen Thread. Mit "CreateThread" kannst du einen solchen starten und mit "GetExitCodeThread" kannst du den Verarbeitungsstatus oder dessen Ergebnis abfragen.

        Ale

        Comment


        • #5
          Danke für eure Antworten. Ich werde mal Simons Lösung
          ausprobieren. Threads wären wahrscheinlich prinzipiell besser,
          aber die Arbeit... ;-) Die Anwendung, für die ich das Ganze
          brauche, ist eh mehr ne Altlast -- würde sich kein großer Aufwand lohnen (oder bezahlt werden ;-) ).
          <br>Ciao, Uli

          Comment

          Working...
          X