2015-11-06 138 views
0

我想更改整個菜單欄的顏色。我在這個主題上發現了一些帖子,但迄今爲止沒有任何幫助。我特別想用這樣的簡單的片斷:在MFC對話框中更改菜單欄背景顏色

MENUINFO MenuInfo = {0}; 
    MenuInfo.cbSize = sizeof(MenuInfo); 
    MenuInfo.hbrBack = *NewBrush; // Brush you want to draw 
    MenuInfo.fMask = MIM_BACKGROUND; 
    MenuInfo.dwStyle = MNS_AUTODISMISS; 
    MenuInfo.cyMax = 25; 

    CMenu* pMenu = GetMenu(); 
    HMENU mh = pMenu->GetSafeHmenu(); 
    if(IsMenu(pMenu->m_hMenu)) 
    { 
     SetMenuInfo(mh, &MenuInfo); 
    } 

GetMenu似乎並沒有工作。這與窗口是對話框有關嗎?我試過在OnInitDialogOnCreate之間調用它。

+0

我想你應該看看MFC Feature Pack CMFCMenuBar類。 – sergiol

回答

0

爲了定製您的CMenu您需要使用MF_OWNERDRAW風格。基本上你需要處理WM_MEASUREITEMWM_DRAWITEM消息來實現所需的功能。

+0

謝謝你。我發現這個頁面似乎使用你建議的方法: – gregston

+0

對不起,打回來。正如我所說的,我發現這個網頁似乎使用了你建議的方法:[link](http://www.codeguru.com/cpp/controls/menu/article.php/c3721/Create-an-Owner- Draw-Menu-Step-by-Step.htm),但是也很容易參與,似乎只是爲每個菜單條目的頭部着色,而不是整個菜單欄。 – gregston