创建了一个对话框工程,用下面代码将创建的IDR_MENU_LANM菜单加载到了对话框上,
CMenu  *pMenu  =  new  CMenu;  
BOOL  ret  =  pMenu->LoadMenu(IDR_MENU_LANM);  
SetMenu(pMenu); 
请问各位大侠,我如何才能给IDR_MENU_LANM添加背景图片?

解决方案 »

  1.   

    自己重载CMENU看看 cmymenu
    ,然后重载里面的onpaint(),在里面贴图...
    我没试过..呵呵
      

  2.   

    http://blog.csdn.net/bwmwm/archive/2006/10/29/1355035.aspx试试看
      

  3.   

    http://topic.csdn.net/u/20090922/12/c21fbc08-1417-4227-9a83-7e2565d45c64.html
      

  4.   

    我按帖子上说的做了后,用新类实例化了对象后,编译通过。但运行后没有效果。
    CBmpMenu  *pMenu  =  new  CBmpMenu;  
    BOOL  ret  =  pMenu->LoadMenu(IDR_MENU_LANM); 
    SetMenu(pMenu); 不知道该怎么调用
    //pMenu->MeasureItem(lpMeasureItemStruct);
            //pMenu->DrawItem(lpDIS);
      

  5.   

    CMENU类貌似不支持消息循环机制,这个方法不行啊!
      

  6.   

    MENUBARINFO   mbi;   
    mbi.cbSize   =   sizeof(MENUBARINFO);   

    ::GetMenuBarInfo(m_hWnd,   OBJID_MENU,   n,   &mbi);   //n表示第一个菜单,
    CRect   rcMenuBar(mbi.rcBar);  
    得到了信息就自己画吧 
      

  7.   

     “MENUBARINFO” : 未声明的标识符
    应该包含哪个文件!?
      

  8.   

    添加视图类消息  WM_ERASEBKGNDBOOL CHERMESView::OnEraseBkgnd(CDC* pDC) 
    {
    // TODO: Add your message handler code here and/or call default
        //加背景图
    CBitmap   m_bitmap;   
    m_bitmap.LoadBitmap(IDB_BITMAP_BKGROUND);   
    CRect   rc;   
    GetClientRect(rc);   
    CDC   dcImage;   
    dcImage.CreateCompatibleDC(pDC);   
    CBitmap   *pOldBitmap=dcImage.SelectObject(&m_bitmap);   
    BITMAP  bm;   
    m_bitmap.GetBitmap(   &bm   );   
    //   Use   the   minimum   width   and   height   
    int width = min(bm.bmWidth,   rc.Width());   
    int height = min(bm.bmHeight,   rc.Height());   

    //   Draw   the   bitmap   as   the   window   background   
    pDC->BitBlt(rc.Width()-width,0,width,height,   &dcImage,   0,   0,   SRCCOPY);   

    //   Release   
    dcImage.SelectObject(pOldBitmap);   
    dcImage.DeleteDC();   
    return true;
       // return CView::OnEraseBkgnd(pDC);
    }