Welche Window Message?
-
Hallo, ich hab schon bissl hier im Forum gesuht, aber leider nichts gefunden.
Ich suche die Window Message, mit deren Hilfe ich gewährleisten kann, das mein Fenster immer richtig dargestellt wird. Ich habe ein Fenster in dem ich male.
Und jedesmal wenn ich zB auf den Desktop wechsle und dann mein Fenster wieder anklicke ist das gemalte nicht mehr aktuell. Erst wenn ich ein anderes Fenster darüber lege, wird es aktualisiert. Welche Nachrichten braucht man um sicher zu sein, dass das Fenster immer richtig dargestellt wird.
-
WM_PAINT !?
-
Die Reicht nicht.
Das Fenster wird immer richtig gezeichnet, außer ich benutze [WindowsTaste]-[D] um auf den Desktop zu wechseln. Wenn ich dann mein Fenster aus der Taskleiste zurückhole, wird es nicht richtig gemalt. Teile Fehler bzw. werden falsch gemalt.
-
Habe den Fehler gefunden:
Ich habe in der WM_PAINT den DC mit GetDC ermittelt. das reicht wahrscheinlich nicht. kann mir jemand sagen warum das damit nicht geht. In MSDN find ich dazu nicht genügend Hilfe.
mit BeginPaint und EndPaint geht es nun.Also wann benutze ich GetDC und warum kann ich das nicht bei WM_Paint benutzen?
und kann ich BeginPaint auch außerhalb von WM_PAINT benutzen?
-
MotW schrieb:
Ich habe in der WM_PAINT den DC mit GetDC ermittelt. das reicht wahrscheinlich nicht.
Wie "reicht nicht"?
MotW schrieb:
kann mir jemand sagen warum das damit nicht geht. In MSDN find ich dazu nicht genügend Hilfe.
mit BeginPaint und EndPaint geht es nun.Hmmm.... wenn in der Hilfe drin steht dass man Begin/EndPaint verwenden soll (muss), dann erübrigt sich doch die Frage, oder?
Oder findest Du es seltsam, dass es funktioniert, wenn man es so macht wie es die Doku beschreibt?MotW schrieb:
Also wann benutze ich GetDC und warum kann ich das nicht bei WM_Paint benutzen?
Wein WM_PAINT ein Begin/EndPaint benötigt (um das WM_APINT "zurückzusetzen").
MotW schrieb:
und kann ich BeginPaint auch außerhalb von WM_PAINT benutzen?
??? Hast Du Dir mal die Doku angeschaut??? Ohne Doku kann man nur sehr schwer irgendwelche Dir unbekannten Funktionen verwenden, oder?
ADD: Also in meiner Doku steht:
An application should not call BeginPaint except in response to a WM_PAINT message.
-
ähm ja
Wer lesen kann is klar im vorteil...ich weiß sry. Danke für die Hilfe. Nur noch eins.Wenn ich außerhalb von WM_PAINT zeichne: Reicht dann GetDC und ReleaseDC oder muss ich da noch irgendwas beachten?
-
Prinzipiell sollte man nie ausserhalb von WM_PAINT zeichnen, da dies ja mit dem nächsten WM_PAINT "überschrieben" wird. Es macht fast nie sinn ausserhalb von WM_WAPINT zu zeichnen (es gibt einige wenige Ausnahmen).
Warum willst Du denn außerhalb von WM_PAINT zeichnen? (GetDC und ReleaseDC reicht dann aus)
-
Ich habe nur gefragt, weil es mich interessiert hatt. Bis jetzt gibt es keine Grund. Vielen Dank für die Antwort .
-
Und man sollte auf ein Bitmap im Speicher zeichnen und dieses dann in WM_PAINT auf den Canvas kopieren, da Zeichenoperationen unter Windows recht langsam sind.
-
Stichwort: BitBlt und Memory-DC (damit verhindert man auch das "lästige" Flackern)