Menus don't use the Aero theme
Posted: Fri Dec 11, 2009 8:52 pm
Disclaimer: Based on this Wishlist thread I decided to open bugs for the separate issues at hand. I think it makes sense to bring them to bug forum (see my post in the linked thread for my reasoning) so individual bug numbers can be assigned. Thanks.
Problem:
Menus don't use the Aero theme using the non-skinned version of MediaMonkey 3.2
Current look:

Correct look:

The menu is based on TBXToolbar, which obviously lacks support for the Vista (and 7) Aero specific enhancements to the UxTheme API.
Thus, instead of drawing a plain area, something like
and
should be used on Vista/7 (with correct MBI_* branching of course).
See the Visual Styles Reference for details.
Taking a short look at the TBX source it should be fairly straight forward. Add the MENU_* and MBI_* definitions from the Vista/7 SDK, assign MENU_THEME via OpenThemeData, then do the appropriate rendering (DrawThemeBackground) in TTBXDefaultTheme.PaintMenuItemFrame and TTBXDefaultTheme.PaintButton and probably some more places.
This is untested as I don't have Delphi (haven't used it for like 10 years or so ...) but should work
. Of course this should also only be done under Vista/7 as the specific UxTheme elements are new.
Problem:
Menus don't use the Aero theme using the non-skinned version of MediaMonkey 3.2
Current look:

Correct look:

The menu is based on TBXToolbar, which obviously lacks support for the Vista (and 7) Aero specific enhancements to the UxTheme API.
Thus, instead of drawing a plain area, something like
Code: Select all
DrawThemeBackground(MENU_THEME, DC, MENU_BARITEM, MBI_HOT, rect, 0);
Code: Select all
DrawThemeBackground(MENU_THEME, DC, MENU_POPUPITEM, MBI_HOT, rect, 0);
See the Visual Styles Reference for details.
Taking a short look at the TBX source it should be fairly straight forward. Add the MENU_* and MBI_* definitions from the Vista/7 SDK, assign MENU_THEME via OpenThemeData, then do the appropriate rendering (DrawThemeBackground) in TTBXDefaultTheme.PaintMenuItemFrame and TTBXDefaultTheme.PaintButton and probably some more places.
This is untested as I don't have Delphi (haven't used it for like 10 years or so ...) but should work
