"Disable desktop composition" flag disables Aero (transparent glass border) effect for the duration of the application's run, which seems like all there is to "visual themes"
Correct; it tells Windows to not use the Aero glass or the Desktop Window Manager (or by extension, hardware acceleration) when that program is run. Therefore, when a program that is configured like that is run, all of the windows on screen share the same frame buffer instead of each getting their own. This is only necessary with a small handful of programs that expect things to be a very specific way and use hard-coded (and possibly undocumented) methods instead of using provided interfaces. Fortunately this is generally limited to very old programs.
What exactly are these "visual themes"? From what I can guess, a "visual theme" is a custom window border style around window content area created using hooks and WDM API calls, though I am prepared to be corrected.
You are correct; visual themes or styles are fancy, graphical renderings of the Windows interface chrome (borders as well as controls like buttons, radio buttons, check-boxes, scrollbars, etc.)
In Windows XP, it was the Luna theme (figure 3) which had the thick, rounded, blue Windows borders and glossy, red
[x]. In Windows Vista and 7, there are the Aero theme (figure 4) which includes the “Glass” transparency effect, as well as the Windows Basic theme (figure 5) which does not, yet is still a theme/style.
How does disabling them affect the system?
The option simply has Windows use turn off themes and use the Windows Classic theme (figure 1) while the program is running. This is usually not required, but again, there could theoretically exist a (probably very old) program which gets borked if run on a themed Windows. Note that Windows themes have existed for quite a while (Windows XP was the first to include them and was released in 2001), so in most cases, only programs written before that would have a problem unless as previously mentioned, they are new but poorly programmed (I’m using “poorly” here for anything written using direct calls and such instead of the API; it is possible for an incompatible program to be well written, but simply be specialized).
but toggling the "Disable visual themes" option doesn't seem to do anything.
To see the effect, you need three conditions to be true:
- Windows must be configured to use a theme (you won’t see anything if it’s currently set to the Classic theme)
- A program must have that compatibility option checked
- The program must be windowed so you can see it; obviously, you won’t see any change for a fullscreen program
The effects of the compatibility options are more obvious for the
Disable desktop composition option than for the
Disable visual themes option because when desktop-composition is disabled for a program, it remains off universally until the program exists (just like how using a video-program that uses hardware acceleration will turn off Aero until it exists). However, turning off themes only affects what is actually displayed on screen, so if it is set for a fullscreen program, Windows turns themes off, but you can’t see it because the program is fullscreen, but if you press Alt+Tab to switch to the desktop, it will turn them back on and then off again when you switch back to the program. It is only visible if the target program is windowed; then you will notice that all windows are un-themed.
Figure 1: Run dialog in Windows 2000 (and earlier)
Figure 2: Windows Classic theme replicates Windows 2000 (and earlier look)
Figure 3: Windows XP’s Luna theme
Figure 4: Aero theme from Windows Vista and 7
Figure 5: Windows Basic theme of Vista and 7
Figure 6: And just for good measure, the default Windows 8 theme, aptly called simply “Windows”