MFC中如何为菜单添加背景图片

lovetow 2009-11-10 05:40:45
创建了一个对话框工程,用下面代码将创建的IDR_MENU_LANM菜单加载到了对话框上,
CMenu *pMenu = new CMenu;
BOOL ret = pMenu->LoadMenu(IDR_MENU_LANM);
SetMenu(pMenu);
请问各位大侠,我如何才能给IDR_MENU_LANM添加背景图片?
...全文
1343 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfx_net 2009-11-18
  • 打赏
  • 举报
回复
找找CMenuXP
lovetow 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shinefen 的回复:]
自己重载CMENU看看 cmymenu
,然后重载里面的onpaint(),在里面贴图...


我没试过..呵呵
[/Quote]
CMENU类貌似不支持消息循环机制,这个方法不行啊!
lovetow 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bwmwm 的回复:]
http://blog.csdn.net/bwmwm/archive/2006/10/29/1355035.aspx

试试看
[/Quote]
我按帖子上说的做了后,用新类实例化了对象后,编译通过。但运行后没有效果。
CBmpMenu *pMenu = new CBmpMenu;
BOOL ret = pMenu->LoadMenu(IDR_MENU_LANM);
SetMenu(pMenu);

不知道该怎么调用
//pMenu->MeasureItem(lpMeasureItemStruct);
//pMenu->DrawItem(lpDIS);
wenkefeng 2009-11-16
  • 打赏
  • 举报
回复
添加视图类消息 WM_ERASEBKGND

BOOL 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);
}
xmzzy 2009-11-16
  • 打赏
  • 举报
回复
据说这个比较复杂,菜单和滚动条是自绘中比较难的两样
lovetow 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wwgddx 的回复:]
MENUBARINFO  mbi; 
mbi.cbSize  =  sizeof(MENUBARINFO); 

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

[/Quote]
“MENUBARINFO” : 未声明的标识符
应该包含哪个文件!?
wwgddx 2009-11-16
  • 打赏
  • 举报
回复
MENUBARINFO mbi;
mbi.cbSize = sizeof(MENUBARINFO);

::GetMenuBarInfo(m_hWnd, OBJID_MENU, n, &mbi); //n表示第一个菜单,
CRect rcMenuBar(mbi.rcBar);
得到了信息就自己画吧
paerxiushi 2009-11-15
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090922/12/c21fbc08-1417-4227-9a83-7e2565d45c64.html
饽饽 2009-11-13
  • 打赏
  • 举报
回复
好像是重载按钮类
阜哥 2009-11-13
  • 打赏
  • 举报
回复
http://blog.csdn.net/bwmwm/archive/2006/10/29/1355035.aspx

试试看
shinefen 2009-11-10
  • 打赏
  • 举报
回复
自己重载CMENU看看 cmymenu
,然后重载里面的onpaint(),在里面贴图...




我没试过..呵呵
lovetow 2009-11-10
  • 打赏
  • 举报
回复
我找了一下,大多是给下拉菜单贴图的,没有给菜单栏贴图片的.
_JeffreyWu 2009-11-10
  • 打赏
  • 举报
回复
重载按钮类.网上找一下,N多

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧