我在对话框上面放了一个菜单,可不可以给菜单这一栏设定一个颜色啊

解决方案 »

  1.   

    Flysnow(飞雪) :
    你现在会了吗?我还是不会
      

  2.   

    自画菜单#include "stdafx.h"
    #include "ctrltest.h"
    CColorMenu::CColorMenu()
    {
    VERIFY(CreateMenu());
    }CColorMenu::~CColorMenu()
    {
    Detach();
    ASSERT(m_hMenu == NULL);    // defaul CMenu::~CMenu will destroy
    }void CColorMenu::AppendColorMenuItem(UINT nID, COLORREF color)
    {
    VERIFY(AppendMenu(MF_ENABLED | MF_OWNERDRAW, nID, (LPCTSTR)color));
    }/////////////////////////////////////////////////////////////////////////////#define COLOR_BOX_WIDTH     20
    #define COLOR_BOX_HEIGHT    20
    void CColorMenu::MeasureItem(LPMEASUREITEMSTRUCT lpMIS)
    {
    // all items are of fixed size
    lpMIS->itemWidth = COLOR_BOX_WIDTH;
    lpMIS->itemHeight = COLOR_BOX_HEIGHT;
    }void CColorMenu::DrawItem(LPDRAWITEMSTRUCT lpDIS)
    {
    CDC* pDC = CDC::FromHandle(lpDIS->hDC);
    COLORREF cr = (COLORREF)lpDIS->itemData; // RGB in item data if (lpDIS->itemAction & ODA_DRAWENTIRE)
    {
    // Paint the color item in the color requested
    CBrush br(cr);
    pDC->FillRect(&lpDIS->rcItem, &br);
    } if ((lpDIS->itemState & ODS_SELECTED) &&
    (lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
    {
    // item has been selected - hilite frame
    COLORREF crHilite = RGB(255-GetRValue(cr),
    255-GetGValue(cr), 255-GetBValue(cr));
    CBrush br(crHilite);
    pDC->FrameRect(&lpDIS->rcItem, &br);
    }
    /*
    if (!(lpDIS->itemState & ODS_SELECTED) &&
    (lpDIS->itemAction & ODA_SELECT))
    {
    // Item has been de-selected -- remove frame
    CBrush br(cr);
    pDC->FrameRect(&lpDIS->rcItem, &br);
    }*/
    }/////////////////////////////////////////////////////////////////////////////
    // custom menu test - menu ids: index of color.static COLORREF colors[] = {
    0x00000000,     // black
    0x00FF0000,     // blue
    0x0000FF00,     // green
    0x00FFFF00,     // cyan
    0x000000FF,     // red
    0x00FF00FF,     // magenta
    0x0000FFFF,     // yellow
    0x00FFFFFF      // white
    };
    const int nColors = sizeof(colors)/sizeof(colors[0]);
    /////////////////////////////////////////////////////////////////////////////// Call AttachCustomMenu once
    //   it will replace the menu item with the ID  'IDM_TEST_CUSTOM_MENU'
    //   with a color menu popup
    // Replace the specified menu item with a color popup
    void CTestWindow::AttachCustomMenu()
    {
    // now add a few new menu items for (int iColor = 0; iColor < nColors; iColor++)
    m_colorMenu.AppendColorMenuItem(IDS_COLOR_NAME_FIRST + iColor, colors[iColor]); // Replace the specified menu item with a color popup
    //  (note: will only work once)
    CMenu* pMenuBar = GetMenu();
    ASSERT(pMenuBar != NULL);
    TCHAR szString[256];     // don't change the string pMenuBar->GetMenuString(IDM_TEST_CUSTOM_MENU, szString, sizeof(szString),
    MF_BYCOMMAND);
    VERIFY(GetMenu()->ModifyMenu(IDM_TEST_CUSTOM_MENU, MF_BYCOMMAND | MF_POPUP,
    (UINT)m_colorMenu.m_hMenu, szString));
    }/////////////////////////////////////////////////////////////////////////////
    BOOL CTestWindow::OnCommand(WPARAM wParam, LPARAM lParam)
    {
    if (wParam < IDS_COLOR_NAME_FIRST || wParam >= IDS_COLOR_NAME_FIRST + nColors)
    return CFrameWnd::OnCommand(wParam, lParam);        // default // special color selected
    CString strYouPicked;
    strYouPicked.LoadString(IDS_YOU_PICKED_COLOR); CString strColor;
    strColor.LoadString(wParam); CString strMsg;
    strMsg.Format(strYouPicked, (LPCTSTR)strColor); CString strMenuTest;
    strMenuTest.LoadString(IDS_MENU_TEST); MessageBox(strMsg, strMenuTest); return TRUE;
    }
      

  3.   

    怎么画啊?发个例子给我好吗?[email protected]
      

  4.   

    用工具条自己做菜单把:)
    ----------以上是引用------------------------老大,简介一下呗,,,好想知道,,windows的资源管理器就是工具条做的,IE也是,开始菜单更牛X,也是用工具条做的....