我在向主菜单中添加位图时,程序正确运行,但在该菜单项的前面只是一个小的单色实心方框,并不是我想要的位图,不知道是什么原因。我的作法是:
1。在应用程序的资源文件中添加想要增加的位图,并将其ID命名为IDB_OPEN1和IDB_OPEN2;
2。在应用程序的视图类中添加CBitmap类的对象,取名为bm_open1和bm_open2。在视图类的构造函数中添加以下代码:
bm_open1.LoadBitmap(IDB_OPEN1);//分别表示选中和未选两个状态bm_open2.LoadBitmap(IDB_OPEN2);(函数LoadBitmap用于加载位图到CBitmap类的对象)
3。在视图类的成员函数OnDraw()中添加以下代码:
CWnd*parent=GetParent();
CMenu*pmenubar=parent->GetMenu();
CMenu*pmenu=pmenubar->GetSubMenu(2);
pmenu->SetMenuItemBitmaps(1,MF_BYPOSITION,&bm_open1,&bm_open2);
====================================
我的感觉是:我使用的位图是自己在画图板(msdraw)上画的,超过了256色,
你说呢?
1。在应用程序的资源文件中添加想要增加的位图,并将其ID命名为IDB_OPEN1和IDB_OPEN2;
2。在应用程序的视图类中添加CBitmap类的对象,取名为bm_open1和bm_open2。在视图类的构造函数中添加以下代码:
bm_open1.LoadBitmap(IDB_OPEN1);//分别表示选中和未选两个状态bm_open2.LoadBitmap(IDB_OPEN2);(函数LoadBitmap用于加载位图到CBitmap类的对象)
3。在视图类的成员函数OnDraw()中添加以下代码:
CWnd*parent=GetParent();
CMenu*pmenubar=parent->GetMenu();
CMenu*pmenu=pmenubar->GetSubMenu(2);
pmenu->SetMenuItemBitmaps(1,MF_BYPOSITION,&bm_open1,&bm_open2);
====================================
我的感觉是:我使用的位图是自己在画图板(msdraw)上画的,超过了256色,
你说呢?
CRect CRectTemp; GetClientRect( CRectTemp );
DCDlg.FillRect( CRectTemp, &CBrushBackGround );
当然,还有一些其他的
哦,看错了,不好意思原来是菜单中,你看《深入浅出MFC》吧,有例子的
{bm_open1.LoadBitmap(IDB_BITMAP2);//CBitmap 类型的成员变量
bm_open2.LoadBitmap(IDB_BITMAP3);
CMenu* pMenu=new CMenu;
pMenu->LoadMenu (IDR_MENU2);pMenu->SetMenuItemBitmaps(ID_MENUITEM32771,MF_BYCOMMAND,&bm_open1,&bm_open2);
//设置ID为ID_MENUITEM32771的菜单项的图标
AfxGetMainWnd()->SetMenu (pMenu);
//设置对话框的菜单}
你说的好像是在一个按钮的响应函数中。可是我处理的是程序的主菜单。该如何做呢?
to qdjiang()
不在OnDraw(),那应该在什么地方,还请明示!
可能你们给我的方法在你们自己的程序中可以用。在这里表示谢意。不过,我还是在自己的程序中使用自己的方法搞定了这件事。不过还是谢谢你们对我提出问题的关注。谢谢。