Invalidate Bug oder Feature?

Thomasio

Erfahrenes Mitglied
Drauf gekommen bin ich durch einen dummen Tippfehler

Wenn ich ein Handle für ein Fenster habe, was aber nicht wirklich existiert und dann Invalidate auf dieses Handle versuche, etwa so:

Code:
HWND MyNonExistingWindow;
InvalidateRect(MyNonExistingWindow,NULL,false);

dann interessiert XP sich dafür nicht die Bohne

Aber Vista zeichnet den gesamten Desktop neu und das auch noch sehr eigenwillig
Ich habe noch nicht genau raus, welche weiteren Umstände zu jeweils welchem Verhalten führen, aber die Palette reicht von kurz flackern bis zu edit controls die teilweise unsichtbar werden, wohlgemerkt in ANDEREN Anwendungen

Reproduzieren kann ich es mit leeren Multiline edit - readonly Feldern
Wenn meine Anwendung InvalidateRect() aufruft dann werden in ALLEN anderen Anwendungen die gerade offen sind ALLE Multiline edit Felder die auf readonly stehen, keinen Inhalt und keinen Hintergrund haben (also standard weiss) teilweise transparent, selbst die Scrollbar (sofern vorhanden) verschwindet, nur die oberste Zeile bleibt weiss
 
Was da passiert ist schon klar, aber es erklärt nicht das unterschiedliche Verhalten von XP und Vista, vor allem erklärt es absolut nicht, warum unter XP auf dem Bildschirm scheinbar gar nicht passiert (double buffer oder ähnliches fängt wohl das flackern ab) während unter Vista alles anfängt zu flackern und edit Felder in anderen Anwendungen teilweise transparent werden
 
Zurück