Frage

In WTL unterstützt CBITMAPButton kein Bild mit transparenter Ebene, wie PNG. Ich passe den Code an, der GDI + verwendet, um PNG zu zeichnen, nennen Sie ihn als CPNGbutton. Aber auf dem Win XP sind die Dinge seltsam. Wenn die Taste von einem anderen Fenster überlappt ist, empfängt die Taste zuerst WM_PAINT, und dann den Elternteil, der fehlerhafte Ergebnis verursacht.

eingeben Sie das Bildbeschreibung hier --->  Geben Sie hier eingeben "

Ich überprüfe die Ressource und entfernen Sie das WS_TABSTOP-Attribut aus der Vorlage der Schaltfläche, die Dinge gehen ok, das übergeordnete Fenster empfängt WM_PAINT zuerst, dann die Taste. Welchen Ursache WS_TABSTOP, um den Fenstermalerei zu beeinflussen?

War es hilfreich?

Lösung

Das passiert, wenn Sie den Hintergrund nicht zeichnen.Das hinterlässt ein "Loch" im Fenster, sehen Sie die Pixel des unabhängigen Fensters hinter Ihrer.Oder der Desktop, wenn kein solches Fenster vorhanden ist.Nicht anders sicher, was das mit WS_Tabstop zu tun hat.

Verwenden Sie das Flag von WS_EX_TRANSENT.Das zeigt Windows an, dass das übergeordnete Element der Taste im Client-Fenster zeichnet, um die Hintergrundpixel bereitzustellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top