2012-04-08 5 views
1

WTLでCreateSimpleReBarを使用すると、メインメニューバーには青色のマウスが表示され、ネイティブVista/7ラウンドではなく透明なシェイプが表示されます。何らかの理由でメニューバーが普通のネイティブのものよりも背が高いように見えます。WTLビューア/ 7ネイティブルックアンドフィールでCreateSimpleReBar

CreateSimpleReBarはメニュー自体を描画しますか、何か不足していますか?

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); 

答えて

1

CreateSimpleReBar鉄筋のコントロールを作成し、メニューはm_CmdBar.Createによって作成され、鉄筋のバンドの一つである - WTLのCCommandBarCtrlクラス。後者は、COLOR_MENUHILIGHT(atlctrlw.h)の青い強調表示を含むOSの動作を模倣するメニューをカスタム描画します。

+0

CCommandBarCtrlはowner-drawを使用してメニューを描画しています。新しいWindowsのバージョンに適応するための非常に良い方法ではありません。おそらく、SetMenuItemBitmaps()を使用できますか? – user555

+0

あなたは選択肢があります。カスタム描画されたコマンドバーを含む標準メニュー(古い学校)はまだそれほど悪くない、派手なリボンです。 –

+0

私はwin32のAPIで手を汚し、SetMenuItemInfo()を使って手を動かしました。 http://pastebin.com/Ba2TCH7Q – user555