如题  ↑
代码如下: CBrush m_brush;
::MENUINFO lpcmi;                        
m_brush.CreateSolidBrush(RGB(192,192,192));
memset(&lpcmi,0,sizeof(::LPCMENUINFO));
lpcmi.cbSize=sizeof(MENUINFO);
lpcmi.fMask=   MIM_BACKGROUND;   
lpcmi.hbrBack=(HBRUSH)m_brush.operator HBRUSH();
::SetMenuInfo(GetMenu()->m_hMenu,&lpcmi); 
经测试上面代码,在vs2005中运行能修改菜单背景颜色,在vs2005中编译没问题,运行时在报错
C:\Documents and Settings\Administrator\桌面\1.jpg在线等~~~~~

解决方案 »

  1.   

    在CMainFrame类中找到CMFCMenuBar m_wndMenuBar;这个成员变量,将跟它相关的代码注释掉,然后运行,OK。
      

  2.   

    按4楼说的改成功了,但工程其它样式却受到影响了:
    头文件里定义:
    CMenu m_wndMenu;
    CPP里的OnCreate里加上这段代码:
    m_wndMenu.LoadMenu(IDR_MAINFRAME);   
    SetMenu(&m_wndMenu);   
      
    MENUINFO   menuinfo;      
    menuinfo.cbSize = sizeof(MENUINFO);   
    menuinfo.fMask = MIM_BACKGROUND;      
    menuinfo.hbrBack = ::CreateSolidBrush(RGB(203, 228, 253));      
    CMenu*  pMenu = GetMenu();      
    ::SetMenuInfo(pMenu->m_hMenu, &menuinfo);      
    DrawMenuBar();   
      

  3.   

    问题解决, 创建VISUAL STUDIO工程样式按照4楼和5楼的朋友那样改就能出效果,但是在MFC标准的工程样式中这样修改菜单会出不来,最小、最大以及关闭按钮都不能正常显示!!!  纳闷~~~

    不知道有没有将菜单下拉列表的背景设置透明的方法??????????? 今晚结贴~~~~~~