void CMainFrame::MenuChange()
{
//CBitmap *pMenuBitmap//需要定义为成员变量
pMenuBitmap = new CBitmap
pMenuBitmap->LoadBitmap(IDB_BITMAP_right)//需要加载的图标资源
CMenu *pWcqMenu
pWcqMenu = GetMenu()->GetSubMenu(0)//子菜单,0代表主菜单的第一个子菜单
pWcqMenu->SetMenuItemBitmaps(1,//第几个功能,从0开始 MF_BYPOSITION| MF_STRING| MF_ENABLED,//属性 pMenuBitmap,
pMenuBitmap
)
}
上面的函数 在主框架int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中调用即可
VS2010的MFC对话框程序中添加菜单栏的过程,我大致分了这五步。一、将Menu加入Resource视图中
在WorkSpace中的Resource视图下,在任意一个文件夹图标上,右击选择Insert(插入)选项,在d出的对话框中选择Menu以后,再点击,new按钮,菜单就会添加成功了,但是现在还没有完成,还不能进行编译,因为现在的菜单时空的,在编译的时候会被清除的。
二、用菜单编辑器添加菜单栏及菜单项
菜单添加成功后,菜单编辑器自动打开,可以在其中添加菜单栏及菜单项,比较简单。
三、将菜单加载到你的对话框
第一步中添加一个菜单项,这是菜单就真正的加到了你的工程中了,接下来就是如何将菜单加载到你的对话框中了。
打开你新加入的菜单项,单击“项目”-->“添加现有项”,在这里选择已有的类,就是你要为其添加菜单的对话框的类,例如,***Dlg.cpp。然后确定。
四、在相应的文件中添加代码
打开对话框头文件***Dlg.h,声明CMenu 变量,例如m_Menu
打开***Dlg.cpp 文件,在***Dlg::OnInitDlg()中加入如下语句:
m_Menu.LoadMenu(IDR_MENU1) // IDR_MENU1为你加入的菜单的ID,在Resource视图的Menu文件夹下可以找到
SetMenu(&m_Menu)
这样就OK了,调试一下,菜单就已经出现在对应的对话框中。
五、利用向导生成菜单消息响应函数
选择项目下的类向导,选择类名为”***Dlg.cpp”,在“命令”选项卡下的“对象ID(B)”中,选择各子菜单项的对应的ID,然后在“消息(S)”中双击COMMAND消息。
这时会d出对话框类,你可以更改对应子菜单项的函数处理名,然后点击确定。菜单消息响应函数生成完毕,加入你需要的代码。
我们在使用Windows95时,可以注意到在“开始”组中的菜单项前都有一个图标,而且在Word
97中的菜单项前也有一个图标。这些图标不但让我们清楚地了解到屏幕上的各种工具按钮与各个菜单项之间的联系,而且还增加了应用程序界面的美观。那么,请问如何用Visual
C++
5.0在应用程序菜单中增加图标?
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及其成员函数的书即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)