Welche Messages bekomme ich bei Maximierung, Minimierung, Erstellung?
-
Hallo,
habe schon gesucht, allerdings nix gefunden. Das MSDN ist leider so unuebersichtlich.
Weiss jemand, welche Message ich beim Maximieren und Minimieren eines Fensters bekomme?
Ausserdem muss ich kurz nach Erstellung des Fensters etwas zeichnen. Bei WM_CREATE und WM_INITDIALOG existiert das Fenster ja noch nicht auf dem Bildschirm, deswegen zeichnet er auch nix. Gibt es 'ne schöne Variante, dieses Problem zu lösen?
Danke und Gruß
Alex
-
-
Gezeichnet wird imer nur im WM_PAINT Handler, alle anderen Stellen machen keinen Sinn!
-
Ich konkretisiere mein Problem mal: Ich habe ein Control auf einem Dialog, auf welches ich direkt nach Programmstart und nach dem "Deminimier"-Vorgang (nicht Maximimier-) etwas zeichnen muss. Ein Timer oder WM_PAINT (oder doch, nur wie?) kommt nicht in Frage, da das dann flackern würde (kann leider keinen BackBuffer benutzen).
-
Dann führe direkt nach dem WM_SYSCOMMAND ein UpdateWindow durch.
-
Danke für den Tip, aber irgendwie verstehe ihn nicht ganz.
Nehmen wir mal an, IDC_BOX ist ein Rechteck auf einem modalen Dialog. Jetzt möchte ich bei Bedarf (also nur wenn es nötig ist) etwas auf ihn zeichnen.
Das relevante meiner Nachrichtenfunktion sieht bis jetzt so aus:
switch(uiMessage) { // ... case WM_MOVING: DrawBox(GetDlgItem(hDlg, IDC_BOX)); break; // ... }Welche Messages muss ich denn jetzt noch wie händeln, damit ich dauernd ein Bild sehe, welches nur bei Bedarf gezeichnet wird?
Danke!!!
Alex
-
Hoi,
Alex_ schrieb:
Ich konkretisiere mein Problem mal: Ich habe ein Control auf einem Dialog, auf welches ich direkt nach Programmstart und nach dem "Deminimier"-Vorgang (nicht Maximimier-) etwas zeichnen muss. Ein Timer oder WM_PAINT (oder doch, nur wie?) kommt nicht in Frage, da das dann flackern würde (kann leider keinen BackBuffer benutzen).
Also ich weiß nicht, ob ich dich richtig verstanden hab:

- du willst etwas auf ein Control zeichnen, welches als Parent einen Dialog hat
- du nimmt keine WM_PAINT (schwachsinn!
) weil das flackert...?
- hmm und du willst 'nicht immer' etwas zeichnen; sondern nur 'manchmal'?hm also wenn ich das richtig sehe (sry!
) hast du das Pinzip nit janz verstanden:Alex_ schrieb:
Welche Messages muss ich denn jetzt noch wie händeln, damit ich dauernd ein Bild sehe, welches nur bei Bedarf gezeichnet wird?
...also du MUSST IMMER ZEICHNEN, sonst wär kein Fenster da (...) ...
das heißt: du musst auf WM_PAINT dein Kram zeichnen, und den IMMER UND IMMER WIEDER DA ZEICHENEN lassen, wenn sich das dann ändert, dann mussu das 'geänderte' IMMER UND IMMER WIEDER zeichen lassen, nämlich genau dann, wenn eine Aktualisiereung von deiner Programmoberfläche gefordert wird.Ahja nochwas: wenn du auf ein Control zeichnen willst...dann kannst dafür nicht die WM_PAINT deines Dlg's nehmen, sondern du musst die WM_PAINT des Controls nehmen...und dazu mussu Subclassen!

PS: Wegen DoubleBuffering siehe: Hier!