Alphablending mit ActiveX-Steuerelement
-
Hallo!
Ich habe ein ActiveX programmiert. Nun möchte ich ein Alphablending (man soll zum Teil Vorder - als auch Hintergrund sehen! Das Alphablending läuft einwandfrei. Um das zu bewerkstelligen muss ich das Steuerelement ausblenden, den Hintergrund in einem CBitmap speichern und danach das Steuerelement wieder einbleden. Dann generiere ich aus dem gespeicherten Hintergrund und dem ActiveX ein alphablending!
So wollt ich es machen,
// dies steht in einer Memberfunktion namens "Update"
ShowWindow(SW_HIDE); // Steuerelement ausblenden
UpdateBackground(); // Hintergrund in CBitmap ... kopieren
ShowWindow(SW_SHOW); // Steuerelement wieder einblendenDie WM_PAINT Message des Steuerelements überprüft ob ein kopierter Hintergrund existiert und wenn ja wird daraus mit dem Steuerelement selbst ein Alphablending generiert was dann auf das Steuerelement gezeichnet wird!
Nun das Problem!
Wenn ich zwischen dem Ausblenden des Steuerelements eine MessageBox ausgebe funktioniert es! Also gehe ich davon aus das es irgendwie zu lange dauert bis das Steuerelement ausgeblendet ist! Wie kann ich das denn realisieren? Oder gibt es eine bessere Methode ? Danke für deine Hilfe!Mit freundlichen Grüßen
Ronny.W
-
Was ich nicht verstehe, ist folgendes:
Du holst Dir den Hintergrund des ActiveX. Da das Ax auf einer ClientSite liegt, ist also der Hintergrund das, was von dieser gezeichnet wird. Erst zeichnet sich also die ClientSite und danach das Ax. Warum muss man das Ax dafür ausblenden?
-
Nein! Ich hohle mir den Hintergrund des darunterliegenden Fensters! Das benötige ich dann für das Alphablending!
-
Ja ok.
Also wenn Du das aktuelle Fenster ausblendest, wird an das darunterliegende ja nur ein InvalidateRect() geschickt. Ich denke also, Du müsstest dieses darunterliegende Fenster vorher mit UpdateWindow neu zeichnen lassen.
-
Vielen Dank!
Es funktioniert einwandfrei!!!!
:p