位图菜单:
在网上看到的文章如下:
看下文章之前你要注意两个问题,一是你加载的位图是*.bmp的图片不是*.ico;二是图片的大小要定为16*16,不然你会看不到位图(我就是犯了这个弄了一天).
MFC的CMenu类有一个成员函数SetMenuItemBitmaps,能用于往菜单中增加图标。具体方法如下:
在应用程式的资源文件中添加想要增加的位图,并将其ID命名为IDB_OPEN1和IDB_OPEN2;
---在应用程式的视图类中添加CBitmap类的对象,不妨取名为bm_open1和bm_open2,
在视图类的构造函数中添加以下代码:
bm_open1.LoadBitmap(IDB_OPEN1);
bm_open2.LoadBitmap(IDB_OPEN2);
(函数LoadBitmap用于加载位图到CBitmap类的对象)在视图类的成员函数OnDraw()中添加以下代码:
CWnd * parent=GetParent();
CMenu * pmenubar=parent->GetMenu();
CMenu * pmenu=pmenubar->GetSubMenu(2);
pmenu->SetMenuItemBitmaps(1,MF_BYPOSITION,&bm_open1,&bm_open2);
前三行得到指向菜单的指针,第四行调用函数SetMenuItemBitmaps往菜单中增加图标,具体参数的含义可参见有关介绍MFC及其成员函数的书即可.
就是犯了这个错误,我网上走了很久:
然后我发现另一篇文章可以实现同样的效果,不记得网页地址了,自己写出来!
在应用程序的框架类CMainFrame添加CBitmap类的对象,不妨取名为bm_open1和bm_open2,
同样在构造函数中添加如下代码:
bm_open1.LoadBitmap(IDB_OPEN1);
bm_open2.LoadBitmap(IDB_OPEN2);
然后在CMainFrame::OnCreate()中添加如下代码:(注意,这里和上面不同了,不用获得父类的指针了)
CMenu * pmenubar=GetMenu();
CMenu * pmenu=pmenubar->GetSubMenu(2);
pmenu->SetMenuItemBitmaps(1,MF_BYPOSITION,&bm_open1,&bm_open2);
最后实现的效果一样,主要困扰我的问题是图片大小没调整好显示不出来.特作此笔记!