Windows Themes (WinAPI)
-
Hallo zusammen,
Ich habe ein Fenster und die entsprechenden Steuerelemente mit WinAPI erstellt (CreateWindowEx). Das Design des Fensters und der Steuerelemente erinnert nun aber stark an Windows 3.11. Wie kann ich es bewerkstelligen, dass das aktuelle Windows-Thema geladen wird (meine App wird auf Windows 98, 2000, XP und Vista laufen).
Danke für eure Hilfe
Gruss
-
Du musst Deiner Anwendung ein CommonControls-Manifest geben...
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1377463.html
-
edelweiss0 schrieb:
Das Design des Fensters und der Steuerelemente erinnert nun aber stark an Windows 3.11.
Geil!
-
Besten Dank für deine Antwort. Hat aber nur bedingt geholfen. Die Buttons haben zwar nun den Vista Style angenommen (die Schrift bleibt "Fett"), die ListBox scheint dies aber nicht gross zu stören (wurde mit CreateWindow() erstellt).
Zudem ist der Fensterhintergrund immer noch so ein dunkles "Grau"...
Dialog:
-
Selbst mit den entsprechenden Stilen bist Du immer noch verantwortlich die richtigen Fonts zu setzen, bzw. die Hintergrundfarben werdne von Dir kontrolliert.
Wenn das Fenster nicht von der Standard-Dialog Klasse abgeleitet ist, dann hast Du auch nicht die entsprechenden Hintergünde wie bei einem Dialog.
-
In dem Falle eine kurze Frage: Wäre es einfacher ein Dialog zu erstellen (IDD...) und dann die anderen Dialoge (wie im Bild sichtbar) auf den "Grunddialog" zu setzen?
Wie bekomme ich dann die ListBox ist den Windows-Style? Die gehört doch ebenfalls zu den Comm-Ctrls ?
-
Es ist doch nur der falsche Font eingestellt. Den kannst du doch für jedes Controll, und somit auch Listbox selbst setzen. Ich habe das so gemacht:
HGDIOBJ hfDefault = ::GetStockObject(DEFAULT_GUI_FONT); ::SendMessage(hwnd, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));