Windowxs XP Style in WinAPI
-
Hallo Leute,
ich habe eine Frage, deren Antowrt ich einfach nirgends finde. Ich baue mit dem WiX Framework gerade eine Installationsroutine mit grapghischen Elementen. Der Windows Installer verwendet dabei die aktuellen Einstellungen des Betriebssystems um die Buttons, die Texte, etc. darzustellen.
Ich soll einen eigenen Bootstrapper mit diversen Sprachen und zusätzlichen Features mit der WinAPI basteln (an alle, die sagen, WindowsForms oder MFC ist besser: ja, ihr habt recht, geht aber nicht), die das gleiche L&F wie die folgenden vom Windows Installer gezeichneten Dialoge. Sprich, auf jedem Betriebssystem soll das Programm den aktuellen Style annehmen.
Gibt es da eine Möglichkeit mit der WinAPI? Ich finde darauf einfach keine Antwort. bei mir sieht das Programm immer gleich aus, auf allen Systemen: dicke Schrift, langweilige Buttons, etc.! +
Ich danke euch
AkonFps. Auch wenn es keine Möglichkeit der nativen Darstellung gibt, würde ich mich freuen, wenn ihr mir das mitteiltet.
-
Möglich schon, immerhin ist die WinAPI momentan nativ und andere Frameworks, wie zB MFC, nicht viel mehr als Wrapper.
Am besten liest du dich bei Problemen mal ein bisschen in die WinAPI Dokumentation ein oder guckst bei entsprechenden Webseiten vorbei (zB http://www.winapi.net/). Mit WinAPI musst du halt viel "manuell" erledigen. Während du zB bei .NET im Property Fenster die Schrift einstellen kannst, musst du mit WinAPI etwas Code dazu schreiben:SendMessage(handle, WM_SETFONT, WPARAM(GetStockObject(DEFAULT_GUI_FONT)), MAKELPARAM(FALSE, 0));Das sollte zB diese fette Schrift bei neu erstellten Controls auf den gewohnten Dialog-Look bringen. Du kannst natürlich auch mit Ressourcedateien arbeiten. Dann brauchst du einige dieser "manuellen" Sachen nicht. Das ist zwar etwas handlicher, da es diverse Editoren fur Ressourcedateien gibt. Letztendlich ist das allerdings nicht ganz so flexibel.
Und was den XP Look betrifft, dazu kannst du eine sogenannte Manifest Datei verwenden. Einen Thread dazu hatten wir hier erst kürzlich.