Frage

Ich versuche, die OpenThemeData (siehe Msdn zu nennen OpenThemeData ) Funktion, aber ich konnte nicht feststellen, was sind die akzeptable Klassennamen durch den pszClassList Parameter übergeben werden.

HTHEME OpenThemeData(      
    HWND hwnd,
    LPCWSTR pszClassList
);

Kann mir jemand sagen, was sind die akzeptable Klassennamen, die ich in diesem Parameter übergeben kann? Dank!

War es hilfreich?

Lösung

können Sie sehen in „AeroStyle.xml“ als vorher bereits erwähnt, die für Vista / Aero eine genaue Liste gibt. Allerdings, wenn Sie wollen sicher spielen (und Sie tun wahrscheinlich) die Klassennamen sollten in der Regel sein Windows-Klassennamen von Windows Common Controls. Zum Beispiel Knöpfe drücken und Kontrollkästchen verwenden, den Klassennamen „Button“, die Edit-Control „Edit“ usw. im Allgemeinen ich den Klassennamen der Steuer auswählen, die am nächsten ist, was auch immer individuelle Element arbeite ich an ist, und verwenden Sie die Themendaten für das. Auf diese Weise kann Code bekommen, die tatsächlich mit XP, Vista und (hoffentlich) Windows 7, unabhängig davon, was dem Benutzer ausgewähltes Thema arbeitet.

Allerdings, wenn Sie rohe Win32 viel verwenden, werden Sie wahrscheinlich nicht tun viel Kontrolle Schöpfung direkt den Klassennamen verwenden. Die Klassennamen sind eher liberal ganz MSDN bestreut. Ein guter Anfang ist in der Regel die „commctrl.h“ Datei aus dem Platform SDK, das eine Menge von sich hat, und sie sind immer in der MSDN-Hilfe zu den einzelnen gemeinsamen Kontrollen beschrieben. Sie können sie auch oft lernen, indem man, wie Dialoge in RC-Dateien definiert werden, indem sie in einem Texteditor öffnen. Diese die Klassennamen für die Kontrollen enthalten

Andere Tipps

Der Artikel Teile und Staaten auf MSDN enthält eine Tabelle, die die Kontrollklassen Teile und Staaten zeigt. Die Werte in der Tabelle sind in Vsstyle.h und Vssym32.h definiert.

Hier ist ein kurzer Hinweis:

BUTTON, CLOCK, COMBOBOX, COMMUNICATIONS, CONTROLPANEL, DATEPICKER, DRAGDROP, 
EDIT, EXPLORERBAR, FLYOUT, GLOBALS, HEADER, LISTBOX, LISTVIEW, MENU, MENUBAND, 
NAVIGATION, PAGE, PROGRESS, REBAR, SCROLLBAR, SEARCHEDITBOX, SPIN, STARTPANEL, 
STATUS, TAB, TASKBAND, TASKBAR, TASKDIALOG, TEXTSTYLE, TOOLBAR, TOOLTIP, 
TRACKBAR, TRAYNOTIFY, TREEVIEW, WINDOW

Die Antwort auf die Frage Windows-Visuelle Themen: Galerie der Teile und Staaten? bietet eine „Teile und Staaten Explorer“ Anwendung, in der Sie blättern und testen die meisten der Stile.

Klassennamen sind abhängig von dem Thema. Zum Beispiel, wie die Dokumentation für OpenThemeData Staaten :

  

Klassennamen für das Aero-Design sind   definiert in AeroStyle.xml, das ist   in dem Include-Ordner von dem gefunden   Microsoft Windows Software Development   Kit (SDK).

Ich weiß, dass dies eine alte Frage ist, aber ich möchte eine aktualisierte Antwort (2018) für diejenigen geben, die hier von Google kommen.

Die akzeptierte Antwort von DavidK sagt in die Datei suchen „ AeroStyle.xml “, wo die Themen definiert. Diese Datei war ein Teil der Windows 7 SDK, sondern aus den Windows 10 SDK entfernt worden ist, so dass die akzeptierte Antwort ist nicht mehr sinnvoll.

Die Antwort von Splash Links auf die MSDN , wo die Liste der Themennamen, Teile und Staaten ist sehr incompetlete und nicht aktualisiert.

Die Themen sind gezeichnet von uxtheme.dll , die die Bilder und Farben lesen usw. aus der Datei aero.msstyles im Ordner C:\Windows\Resources\Themes\Aero unter Windows 10.

Aber wenn Sie diese Datei in einem Hex-Editor öffnen Sie nicht die Namen aller Themen finden. Ich weiß nicht, ob es eine Möglichkeit ist, alle vorhandenen Thema Klassennamen aufzuzählen, die weitergegeben werden können, um OpenThemeData(). Ich nehme an, dass dies nicht möglich ist.

Aber was ich sicher weiß, ist, dass in Windows 10 Build 18282 Microsoft hat das Thema „Clock“ entfernt, die nicht mehr und viele undokumentierte Themen verwendet haben, wie zum Beispiel hinzugefügt: „TaskBand2CompositedSmallIconsVertical8Light::Taskband2“, die als Thema Klasse übergeben wird Namen OpenThemeData().

Und ich weiß auch, dass einige Themen können nur erreicht werden, wenn Sie das richtige Fenster-Handle übergeben. Wenn Sie den Griff des falschen Fenster passieren können Sie ein anderes Thema Griff bekommen als erwartet oder sogar NULL.

Ich weiß auch, dass Microsoft in den letzten 2 Jahren intern alle ihren Code OpenThemeDataForDpi() zu verwenden, anstatt OpenThemeData() auf Windows, weil jeder Monitor 10 eine andere Auflösung haben sich geändert hat.

Das Problem, das wir hier haben, ist ein gravierender Mangel an Dokumentation im MSDN und ein Mangel an einer API-Funktion, um alle verfügbaren Themen aufzuzählen.

Es hat nichts mit Aero zu tun, die noch nicht auf XP nicht existieren! Siehe den Quellcode OpenThemeData () ..

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