Kennung Eins
2004-06-16, 21:18:07
Ich hab hier ein kleines Problem.
(was auch sonst :D )
Eine kurze Beschreibung, was ich will:
Ich lade ein Bitmap (LoadImage), dies bildet den Hintergrund eines CreateWindowEx-Fensters. (Dann ist da noch eine Region, die eine lustige Form definiert)
Auf dieses Grund-Fenster will ich ein paar kleine Bilder (.bmp) legen:
Ebenfalls mittels loadimage laden - nun mache ich diese kleinen Bilder Transparent (Punkt unten links definiert transparente Farbe, dann über BitBlt mit SRCAND und SRCPAINT) und klebe die auf das Hintergrundbild.
Damit sollen Buttons definiert werden (ich will keine CreateWindow-Standard-Buttons nutzen), die bei einem Klick ihr Aussehen verändern.
Ich fange also bei einem klick in das Fenster nun die Koordinaten ab und schaue in einer Liste nach, ob in diesen Koordinaten ein Button liegt. Dann soll das neue Bild angezeigt werden, was sozusagen den "button pressed"-Status anzeigt.
Jetzt das Problem:
In meiner WM_PAINT-Messageschleife lasse ich nun das zweite Bild malen. Doch dieses zweite Bild wird NICHT direkt nach dem Klick angezeigt, sondern erst, wenn das Fenster neu gezeichnet werden muß (i.e. Fenster in Hintergrund und dann wieder in Vordergrund).
Das heißt, ich müsste immer erst mein Fenster verstecken und wieder vorholen, damit ich meine Änderung (Button drücken) auch wirklich sehe.
Wenn ich jetzt UpdateWindow oder RedrawWindow oder einfach nur Sendmessage(hwnd,WM_PAINT,0,0) mache, hilft dies nichts! Das Fenster wird einfach nicht geupdated ....
kann mir jemand versuchen zu erklären, warum das nicht funktioniert? Warum kann ich kein manuelles WM_Paint aufrufen? Wie kriege ich diese Änderung sichtbar?
Ich hoffe da hat jemand Ahnung ... *hoff*
Danke im Vorraus!
(was auch sonst :D )
Eine kurze Beschreibung, was ich will:
Ich lade ein Bitmap (LoadImage), dies bildet den Hintergrund eines CreateWindowEx-Fensters. (Dann ist da noch eine Region, die eine lustige Form definiert)
Auf dieses Grund-Fenster will ich ein paar kleine Bilder (.bmp) legen:
Ebenfalls mittels loadimage laden - nun mache ich diese kleinen Bilder Transparent (Punkt unten links definiert transparente Farbe, dann über BitBlt mit SRCAND und SRCPAINT) und klebe die auf das Hintergrundbild.
Damit sollen Buttons definiert werden (ich will keine CreateWindow-Standard-Buttons nutzen), die bei einem Klick ihr Aussehen verändern.
Ich fange also bei einem klick in das Fenster nun die Koordinaten ab und schaue in einer Liste nach, ob in diesen Koordinaten ein Button liegt. Dann soll das neue Bild angezeigt werden, was sozusagen den "button pressed"-Status anzeigt.
Jetzt das Problem:
In meiner WM_PAINT-Messageschleife lasse ich nun das zweite Bild malen. Doch dieses zweite Bild wird NICHT direkt nach dem Klick angezeigt, sondern erst, wenn das Fenster neu gezeichnet werden muß (i.e. Fenster in Hintergrund und dann wieder in Vordergrund).
Das heißt, ich müsste immer erst mein Fenster verstecken und wieder vorholen, damit ich meine Änderung (Button drücken) auch wirklich sehe.
Wenn ich jetzt UpdateWindow oder RedrawWindow oder einfach nur Sendmessage(hwnd,WM_PAINT,0,0) mache, hilft dies nichts! Das Fenster wird einfach nicht geupdated ....
kann mir jemand versuchen zu erklären, warum das nicht funktioniert? Warum kann ich kein manuelles WM_Paint aufrufen? Wie kriege ich diese Änderung sichtbar?
Ich hoffe da hat jemand Ahnung ... *hoff*
Danke im Vorraus!