RedrawWindow funktioniert nicht
-
Hallo.
Ich habe heute mal mit GDI+ angefangen und zeichne einen Strich auf den Bildschirm und möchste den immer erneuern, aber an anderer Stelle. Damit das geht muss der alte Strich erstmal weg, also dachte ich mir, der Bildschirm muss neu gezeichnet werden. Nach Google ist dazu die Funktion RedrawWindow zuständig und laut MSDN bedeutet ein NULL bei den beiden Parametern rect und hground, dass der komplette Bildschirm neu gezeichnet wird. Doch leider funktion da gar nichts.Ich initialisiere die GDI auf den kompletten Desktop, also muss ich ja auch den kompletten Desktop neu zeichnen.
Hier ist mein Code:
// Desktop neu zeichnen um alten Strich zu entfernen (FindWindow(NULL, NULL) = Desktop) RedrawWindow(FindWindow(NULL, NULL), NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ALLCHILDREN); // Grafikobjekt und Stift initialisieren Graphics g(this->m_hdcDesktop); Pen penWhite(Color(255, 255, 255)); // Strich an Punkt von Maus bis (0|0) neu zeichnen g.DrawLine(&penWhite, 0, 0, ptMouse->x, ptMouse->y);Ich hoffe mir kann da jemand helfen

Gruß
-
Wäre es nicht sinnvoller den Strich in ein transparentes Fenster zu zeichnen? (über CreateWindowEx mit WS_EX_LAYERED, etc.)
Dann musst du nur das Fenster verschieben wenn der Strich woanders auftauchen soll und man muss nicht am Desktop rumhantieren...Ansonsten hilft evtl. dieses:
msdn schrieb:
Remarks
When RedrawWindow is used to invalidate part of the desktop window, the desktop window does not receive a WM_PAINT message. To repaint the desktop, an application uses the RDW_ERASE flag to generate a WM_ERASEBKGND message.
-
Hi.
Nene - das ist mir zu kompliziert
Ich habe es jetzt hinbekommen, unzwar mit dem Handle von dem Fenster, auf dem gezeichnet wurde (GetForegroundWindow).Gruß