Reihenfolge der Invalidates
-
Hi Leute,
Ich brauch zu einer Frage Gewissheit:
Ich hab nen Thread, der schickt mir zwei Nachrichten. In den jeweiligen Messagehandlern wird ein InvalidateRect aufgerufen. Kann ich 100% sicher gehen, dass- die Messagehandler in der richtigen Reihenfolge aufgerufen werden und
- die OnPaint-Nachrichten in der richtigen Reihenfolge kommen und
- zuerst MessageHandler1, OnPaint mit ClippingRegion von MessageHandler1, MessageHandler2, OnPaint mit ClippingRegion von MessageHandler2 aufgerufen wird?
Bei den ersten beiden glaube ich, dass ich sicher sein kann, bei der dritten nciht. Da glauben aber keine 100 % Sicherheit beinhaltet, würde ich gerne eure Meinung dazu hören.
-
Kommt drauf an wie du die message sendest. Bei SendMessage kannst du sicher sein, auser es gibt da noch nen zweiten thread. Bei PostMessage sollte es zwar auch der Fall sein, keiner gibt dir aber ne garantie dafür, also würde ich mich da nich 100%ig drauf verlassen..
-
"Mir" = ein thread?
Wenn du zwei Messages mit Send- oder PostMessage hintereinander an den gleichen Thread (bzw. Fenster davon) schickst, kommen die auch in der gleichen Reihenfolge an. Bei PostMessage allerdings then return-Value kontrollieren - könnte sein das der Empfänger keinen Plat mer in der Queue hat!
WM_PAINT ist etwas anders: diese message wird in die Queue gestellt, wenn keine anderen messages mehr vorliegen. Hier ist keine Bindung an die Reihenfolge der Invalidates gegeben.
Du kannst allerdings mit UpdateWindow oder RedrawWindow ein sofortiges Neu-Zeichnen erzwingen.