Fenster updaten?



  • Hiho,

    ich hab irgendwie das problem, dass ich Text in meinem Fenster hab, der dort nciht hingehört, ich aber irgendwie nicht weiß, wie ich den weg bekomme, außer das Fenster zu minimieren und wieder zu aktivieren, dann klappt das!

    Ich glaube ich erklär mal mein Problem exakt am Beispiel, also padup: 😃
    so sieht das aus, wenn ich in der ersten Runde, ganz normal spiele, hier wird mit der GDI-Funktion "TextOut()" Text, also die erreichten Punkte,auf den Hintergrund geschrieben, alles ganz normal/gewollte:
    http://www.sro.at/bildupload/images/12-01.jpg
    So, wenn ich jetzt ein neues Spiel beginne, dann werden halt die ganzen Daten zurückgesetzt etc. und eine WM_PAINT-Nachricht geschickt, aber das, was vorher mit "TextOut()" geschrieben wurde ist noch da, bzw. wurde halb überschrieben:
    http://www.sro.at/bildupload/images/4-02.jpg
    Wenn ich jetzt das Fenster minimiere und wieder maximiere, dann siehts perfekt aus, so, wie ich das will, das Fenster wird halt irgendwie upgedated, aber ich weiß halt net wie, guckst du:
    http://www.sro.at/bildupload/images/4-03.jpg
    So, und dann hatte ich noch die Idee, dass ich einfach ein weißes Rechteck über den Bldschirm male und dann das Hintergrundpic drüber, und dann könnte ja die Schrift auch weg sein, aber dann passiert das hier, und das is ganz doof *weinz* (das Hintergrundbild wird mehr oder weniger ignoriert!:
    http://www.sro.at/bildupload/images/3-04.jpg

    Und noch ne Idee hatte ich *g*, nähmlich einfach Rechtecke (mit "Rectangle()" über die speziellen Bereiche drüber malen, aber dann haben diese Rechtecke so nen schwarzen Rand, und das sieht auch ncith prikelnd aus ...

    Ach ja, wenn ich dann bei der neuen Runde zusätzlich zu der WM_PAINT noch ne WM_CREATE auf den Weg schicken, dann sieht mein Fenster auch wieder prima aus, wie auf dem 3ten Pic zu sehen ist, aber dann grieg ich irgendwie probs mit der Zuweisung der Fenster zu den CommonControls, also irgendwie werden dann Haken angezeigt und mal nciht, aber is ja auch irendwie verständlich, wenn das Control 2 mal erstellt wurde ...

    Irgendwie wird halt das Fenster nciht aktualisiert, wie es beim Maximieren/Minimiren der Fall ist, und deshalb wollte ich diesen Vorgang imitieren! Und wenn halt so ne Message mit WM_ACTIVATE sende, dann passiert da mehr oder weiger auch nüschts, also ich fange diese Message nirgends ab ...

    Und nach dem Aufruf dieser Funktion: "UpdateWindow(hwnd);" passiert auch ncihts ...

    Vielen Vielen Dank!



  • InvalidateRect



  • Beautyfull!

    Perfekt, dankeschön, in Verbindung mit UpdateWindow() is das genau das, was ich suchte!

    Mercy beaucoup!



  • Wenn man UpdateWindow braucht hat man eigentlich immer was falsch gemacht. 😃



  • Ja, wieso, kannste mir das erklären?

    ABer ohne UpdateWindow passt das irgendwie nciht, was is dadran so falsch?



  • Weil das eigentlich automatisch upgedated wird.

    The WM_PAINT message is sent when the system or another application makes a request to paint a portion of an application's window. The message is sent when the UpdateWindow or RedrawWindow function is called, or by the DispatchMessage function when the application obtains a WM_PAINT message by using the GetMessage or PeekMessage function.


Anmelden zum Antworten