Threads hier eine Lösung?
-
geeky schrieb:
Bei InvalidateRect() sendet Windows meistens ne WM_PAINT-Nachricht, aber nicht notwendigerweise sofort. Mit UpdateWindow() stellt man quasi sicher, dass ne WM_PAINT generiert wird.
Ich würde sagen InvalidateRect sendet nie eine WM_PAINT Nachricht sondern das geschieht immer in GetMessage/PeekMessage.
-
geeky schrieb:
Bei InvalidateRect() sendet Windows meistens ne WM_PAINT-Nachricht, aber nicht notwendigerweise sofort.
Windows sendet sie genau dann, wenn die Nachrichtenwarteschlange leer ist. Da diese aber nicht weiter abgerabeitet wird, bevor die SQL-Abfrage fertig ist, kann sie mit UpdateWindow sofort erzeugt werden.
edit:
@meinung: genau
-
Aber wenn er doch einen Thread dafür benutzt dann wird sie doch abgearbeitet!!
-
Also was wäre denn jetzt ne Lösung??
Auf threads pfeifen und dann sowas hier tun?
bool checkData (void) { // Verbinde zur Datenbank g_infobartext = "Verbindung zur Datenbank hergestellt"; InvalidateRect (hwnd, NULL, true); UpdateWindow (hwnd); // [SQL KRAM FÜR VERBINDUNG RAUSGEWORFEN] // Tabelle auswählen g_infobartext = "Tabelle selektiert"; InvalidateRect (hwnd, NULL, true); UpdateWindow (hwnd); // [SQL KRAM FÜR TABELLENAUSWAHL RAUSGEWORFEN] // usw. }Oder was anderes?
Wenn ich diese Lösung mache gehts nicht 
-
''''''''''''''''''''''''' schrieb:
geht net

Warum nicht?

-
Ich weiß nicht
Das Programm wartet einfach bis die checkData-Funktion zuende ist und dann macht es alles in einem wisch 
-
das würde ich gerne mal sehen.
kannste den ganzen quelltext rausrücken?
-
Ich press hier auch über 50 Dateien ab!
-
na dann...du kannst ja auch ein neues beispiel basteln. statt den sql sachen machst du einfach nur Sleep
-
Also wenn "hwnd" das Fenster ist, das unter WM_PAINT den String aus "g_infobartext" anzeigt, dann funktioniert es genau so.