WM_PAINT bei parent unterdrücken
-
Hallo,
ich habe folgendes Problem und würde mich sehr über Ratschläge freuen:
Ich hab ein Fenster, welches einen modalen Dialog geöffnet hat, welcher wieder
einen modalen Dialog öffnet. Dieser letzte Dialog setzt einen Timer
und verarbeitet die WM_TIMER Msg's. Jetzt kriegt das Hauptfenster bei jedem
Timerevent ein WM_PAINT geschickt, was ein hässliches flackern verursacht.
Wieso ist das so und wie kann ich das beheben?Danke fürs lesen und im Voraus fürs antworten.
Jockel
-
Würde ich nicht machen, weil sonst Dein Parent-Window nach dem Schließen des Dialogs nicht mehr neu gezeichnet wird.
Wenn Du wissen wilst, was Du falsch gemacht hast, solltest Du den Code posten. Möglicherweise wird die WM_Timer erst vopm Hauptfenster aufgefangen und dann an den Dialog weitergeleitet. Das kann maan mit IsDialogMessage() ändern.
-
Verwende einen Back-Buffer (siehe FAQ).
Falls das nicht reicht, kannst Du noch das Löschen des Hintergrunds über
WM_ERASEBKGND verhindern. Manchmal hilft es auch, wenn man bei der Erstellung der Child-Fenster das Flag WS_CLIPCHILDREN angibt.
-
Mmmh, an den Symptomen wollte ich eigentlich nicht rumdoktoren.
Ich verstehe nicht, was das mit dem Timer zutun hat. Testweise macht
die Timerfkt gar nichts, trotzdem kommt das Paint-Event. Wenn ich auf
den Dialog rumklicke oder verschiebe passiert nichts.Komisch.
-
Mit Sicherheit passiert in Deiner TimrProc irgendwas.
Aber mich macht schon stützig, dass Du schreibst: "Bekommt ein WM_PAINT geschickt!"WM_PAINT darf man nicht selber versenden. Dazu dient InvalidateRect und UpdateWindow, oder RedrawWindow!
-
@JockelX
Solange Du den Code geheim hältst, wird es schwierig sein, den Fehler zu finden.
-
Bekommt von irgendwoher geschickt ist natürlich gemeint, aber entschuldigen muss
ich mich trotzdem. Meine TimerProc macht tatsächlich noch was, nämlich drucken.
Wenn ich das auch auskommentiere verschwindet das Flackern. Das Problem
scheint also irgendwo in der Druckerei zu liegen und da könnt ihr mir
natürlich nicht helfen.Also, Danke und Entschuldigung für die unnötige Mühe.
Jockel