Zeichnen außerhalb der Message-Loop?



  • @Hacker:
    Ad 1: richtig
    Ad 2: falsch
    Ad 3: Klappe halten

    @Taeli
    OMG die Frage kann nicht ernst gemeint sein.

    Das BeginPaint/EndPaint muss natürlich aus der Funktion raus wenn du sie auch ausserhalb von WM_PAINT verwenden willst.

    Lies bitte die Doku zu WM_PAINT und BeginPaint . Und bevor du fragst: ergoogle dir die Doku bitte selbst. Tip: wenn die URL "msdn" enthält bist du auf dem richtigen Weg.



  • hustbaer macht mal wieder einen auf aggressiv, weil er im wahren Leben keine Anerkennung bekommt.



  • back bone schrieb:

    hustbaer macht mal wieder einen auf aggressiv, weil er im wahren Leben keine Anerkennung bekommt.

    Arrrgghhh, ich gerate stark in die Versuchung irgendeinen blöden Spruch zu erfinden... gggnnnn...

    Zum Punkt 2: Das ist jetzt Blöd. Ich hab natürlich *keine* Ahnung von der WinAPI, dass die Frage mit 10 Zeilen Code so beantwortet werden kann wusst' ich nicht.



  • hustbaer schrieb:

    Das BeginPaint/EndPaint muss natürlich aus der Funktion raus wenn du sie auch ausserhalb von WM_PAINT verwenden willst.

    Ich hatte es eher so verstanden:

    case WM_TIMER:
      InvalidateRect(hwnd, NULL, true);
      break;
    case WM_PAINT:
      Paint(hwnd);
      break;
    

    Und dann eben bei WM_CREATE oder so SetTimer aufrufen.



  • Zuerst wär imo überhaupt mal interessant, wieso genau du eigentlich nicht in WM_PAINT zeichnen kannst!?



  • HWG schrieb:

    hustbaer schrieb:

    Das BeginPaint/EndPaint muss natürlich aus der Funktion raus wenn du sie auch ausserhalb von WM_PAINT verwenden willst.

    Ich hatte es eher so verstanden:

    case WM_TIMER:
      InvalidateRect(hwnd, NULL, true);
      break;
    case WM_PAINT:
      Paint(hwnd);
      break;
    

    Oh boy...
    Und dann eben bei WM_CREATE oder so SetTimer aufrufen.

    Das BeginPaint/EndPaint muss natürlich aus der Funktion raus wenn er sie auch ausserhalb von WM_PAINT verwenden will.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Es gibt kein "Zeichen" außerhalb von WM_PAINT, Punkt(1).

    Wenn man glaubt, dass man das braucht, hat man ein falsches Konzept und die Windows API/UI nicht verstanden. Punkt(2)...



  • Martin Richter schrieb:

    Es gibt kein "Zeichen" außerhalb von WM_PAINT, Punkt(1).

    Wenn man glaubt, dass man das braucht, hat man ein falsches Konzept und die Windows API/UI nicht verstanden. Punkt(2)...

    Huch? Natürlich gibts das. Die Frage ist nur ob und wann man das braucht...

    Ich glaube der Threadersteller sollte einfach mal das lesen: http://msdn.microsoft.com/en-us/library/dd183315.aspx



  • HWG schrieb:

    hustbaer schrieb:

    Das BeginPaint/EndPaint muss natürlich aus der Funktion raus wenn du sie auch ausserhalb von WM_PAINT verwenden willst.

    Ich hatte es eher so verstanden:

    case WM_TIMER:
      InvalidateRect(hwnd, NULL, true);
      break;
    case WM_PAINT:
      Paint(hwnd);
      break;
    

    Und dann eben bei WM_CREATE oder so SetTimer aufrufen.

    Super, mit SetTimer() und InvalidateRect() klappt es! Danke! 🙂


Anmelden zum Antworten