2012-04-08 10 views
1

Wenn die CreateSimpleReBar in WTL verwendet wird, hat die Hauptmenüleiste diese blaue Farbe beim Maus-Hover und nicht die native vista/7 runde und transparente Form. Auch aus irgendeinem Grund scheint die Menüleiste höher zu sein als die übliche native.CreateSimpleReBar in WTL vista/7 natives Erscheinungsbild

Zeichnet CreateSimpleReBar das Menü selbst oder fehle ich etwas?

http://imageshack.us/photo/my-images/259/wtlmainmenu.png/

HWND hWndCmdBar = m_CmdBar.Create(m_hWnd, rcDefault, NULL, ATL_SIMPLE_CMDBAR_PANE_STYLE); 
// attach menu 
m_CmdBar.AttachMenu(GetMenu()); 

// load command bar images 
m_CmdBar.LoadImages(IDR_MAINFRAME); 
// remove old menu 
SetMenu(NULL); 

// Set m_hWndToolBar member 
CreateSimpleReBar(ATL_SIMPLE_REBAR_NOBORDER_STYLE); 

// Add a band to the rebar represented by m_hWndToolBar 
AddSimpleReBarBand(hWndCmdBar); 

Antwort

1

CreateSimpleReBar schafft eine Bewehrungs Kontrolle, und das Menü ist eine der Bewehrungsbänder, erstellt von m_CmdBar.Create-CCommandBarCtrl Klasse WTL. Letzterer zeichnet das Menü, um das Betriebssystemverhalten zu imitieren, einschließlich der blauen Markierung mit COLOR_MENUHILIGHT (atlctrlw.h).

+0

Also CCommandBarCtrl verwendet Owner-Draw, um das Menü zu zeichnen. Nicht eine sehr gute Möglichkeit, an neue Windows-Versionen anzupassen, imo. Vielleicht könnte man SetMenuItemBitmaps() verwenden? – user555

+0

Sie haben eine Auswahl. Standard-Menü (alte Schule) einschließlich benutzerdefinierter, Befehlsleiste ist immer noch nicht so schlecht, schickes Band. –

+0

Ich habe meine Hände schmutzig in der Win32 API und habe es funktioniert mit SetMenuItemInfo(). http://pastebin.com/Ba2TCH7Q – user555

Verwandte Themen