Ich habe mich nach langem Zögern dazu entschlossen, mich ein Stück weit auf die dunkle Seite der Programmierung zu wagen: Anpassen des Designs einer Form, abweichend vom Windows-Standard. (D.h. der User kann auswählen, ob er Standard oder alternatives Design haben möchte).
Ich habe da eine recht umfangreiche Anwendung, mit vielen Komponenten (PageControls, Panels, Groupboxen, VirtualStringTrees, Comboboxen, Edits etc.). Das ganze ist nicht auf eine bestimmte Größe fixiert, d.h. die Form ist in der Größe veränderbar, ebenso einige Komponenten innerhalb der Form.
Mein Konzept sieht bisher vor, dass ich ein (oder mehrere) Bitmaps habe, die als Datei im "SkinOrdner" liegen. Ausschnitte aus diesen benutze ich z.B. um die Tabs im Pagecontrol zu zeichnen. Auf den einzelnen Tabs liegen dann dazu passende andere Ausschnitte aus dem Bitmap (damit das ganze als ein Bild wirkt.) Sind auf dem Bild weitere Kompos, wie Panels, Groupboxen etc, dann pack ich auch darauf wieder ein Image und zerschnibbel mein Bitmap weiter.
Netterweise verhalten sich z.B. Groupboxen im XP-Style anders als im Classic-Mode, sodass man damit doppelte Arbeit hat.
Ein Umschalten "Skin <-> Standard" würde dann so aussehen, dass ich einfach sämtliche Images ausblende und ggf. bei einigen Sachen den OwnerDraw wieder auf False setze.
Das Problem dabei: Das ist recht aufwendig

. Daher die Frage: Geht das auch irgendwie einfacher? Und zwar so, dass ich mein bestehendes Gerüst (also die bereits vorhandenen Komponenten) nicht komplett umbauen muss?
Es ist mir klar, dass ich damit nicht
alles skinnen kann. Spätestens bei den Scrollbars der VirtualTrees hörts auf, da man die nicht ohne weiteres übermalen kann (da müsste man die wohl ausblenden, und Scrollbars mit was eigenem simulieren, und dann den Tree manuell scrollen). Auch den Rahmen der Form an sich krieg ich damit nicht hin (da werd ich wohl Regions einsetzen). Aber ich hab mir gerade mal den WMP angeschaut...bei dem findet man auch immer wieder die Standardsachen zwischen dem geskinnten Kram
Ein erster Versuch ist im Anhang. Da ist ne Pagecontrol mit mehren Groupboxen drauf. Um die Buttons (und um die Lesbarkeit der Schrift) hab ich mich noch nicht gekümmert.
Frage an die Skin-Fraktion: Bin ich da auf dem richtigen Weg, oder muss nochmal komplett umdenken?
We are, we were and will not be.