jly wrote: ↑15 Apr 2021, 22:33
Can the parameters of SetWindowTheme be set to something other than Explorer?
Very late reply. Sorry 'bout that.
The documentation for theme subclasses is very limited. Just figuring out that they exist and that they can be changed is no simple feat.
Because there so little documentation on the topic, I would guess that the use of theme subclasses (other than the default) is primarily used by Microsoft for Microsoft software. Most of the themes make minor and subtle changes. They offer a consistency for a particular use but they don't provide much value to the average developer. In an attempt to ensure that you won't waste much of your time on this topic and because this was posted in the "Tips and Tricks" forum, I will repeat myself.
Most subclass themes don't provide much value to the average developer.
The exception is the "Explorer" theme for the ListView and TreeView controls. This theme offers a very unique and interactive change to the control. I like it because 1) it changes the color of the row as you move the cursor over it and 2) if the row has an icon, it does not change the color of the icon when the row is selected.
To answer your question: Yes, there are theme names other than "Explorer". Each control has a different list of subclass theme names that are available. In addition, you can remove the theme for the control to get a "no theme" theme. I have been unable to find a complete list of theme names but I've found a couple places to get you started. Disclaimer: I have only tested themes for a few of the controls.
Using Theme Subclasses
Tip: You don't need the theme messages anymore. Use the SetWindowTheme system function instead.
https://docs.microsoft.com/en-us/windows/win32/controls/theme-subclasses
Theme Explorer
Tip: The theme names are embedded in the code in the Classes and Subclasses section.
https://github.com/mity/theme-explorer/blob/master/src/db.c
I hope this is helpful.