WS_POPUP flackert unter Vista

Thomasio

Erfahrenes Mitglied
Ich habe mehrere Anwendungen, die alle nahezu das Gleiche machen
Einen Dialog öffnen

Code:
...

wc.style  = CS_HREDRAW | CS_VREDRAW;

...

hwnd = CreateWindowEx(
                      WS_EX_COMPOSITED,
                      mainwindowname,
                      dialogname,
                      WS_POPUP | WS_VISIBLE | WS_SIZEBOX,
                      CW_USEDEFAULT, CW_USEDEFAULT, 300, 200,
                      HWND_DESKTOP,
                      NULL,
                      hinstance,
                      NULL
                     );

Gleichzeitig mit einem timergesteuerten Thread, via WinInet alle 15 Sekunden Daten von einem php Script auf meiner HP abrufen (als Thread damit die Anwendung beim Verbindungsaufbau nicht hängen bleibt)
Die empfangenen Daten innerhalb des Thread verarbeiten und bei Bedarf mit

Code:
InvalidateRect(Fenstername, NULL, FALSE);

Teile des Dialogs oder auch das ganze Fenster refreshen

Das Ganze funktioniert völlig einwandfrei, mit einer winzigen Ausnahme

Die Grösste dieser Anwendungen (ca 23.000 Zeilen Code in API plain) flackert unter Vista einmal kurz, immer dann wenn der Thread die Verbindung zum Server aufbaut

Ich habe es an 2 verschiedenen Rechnern ausprobiert, mit völlig anderer Hardware, einer Intel, einer AMD, einer NVidia einer ATI, einer 2GB RAM, einer 4GB, mit 32 bit Vista und 64 bit, mit 32 bit XP und 64 bit, unter Vista flackert es immer unter XP nie

Meine kleineren Anwendungen (bis 15000 Zeilen Code) flackern nicht, auch andere Software mit Server Verbindungen flackert nicht, und der Code für den Thread ist nahezu identisch

Ich habe es so weit einkreisen können, dass es nicht flackert, wenn vom Server weniger als 1kb Antwort kommt oder ich die Verarbeitung der empfangenen Daten auskommentiere, aber ich kann mir nicht vorstellen, warum die Länge einer Funktion innerhalb eines Thread Auswirkungen auf den refresh des hwnd haben sollte, zumal es nur unter Vista auftritt und nicht unter XP

Kann mir jemand sagen, was da das Problem ist und wie man das löst?
Müssen Threads unter Vista evtl anders aufgebaut sein?
 
Zurück