1.菜单是窗口框架的组成部分,如果我们要导入自定义的菜单,可以通过以下语句实现
在CMainFrame::OnCreate的函数中添加如下代码段
SetMenu(NULL);//将原本的菜单项去除
CMenu menu;//新定义一个菜单对象
menu.LoadMenu(IDR_MAINFRAME);//将ID为IDR_MAINFRAME菜单资源载入到menu对象中
SetMenu(&menu);//将menu对象设为框架类对象的菜单
menu.Detach();//断开菜单资源与菜单对象的关联
2.生成复选标记菜单项,这段代码是在框架类中实现的
GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED);
3.设置缺省菜单项,即菜单成黑体加粗
GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);/
4.图像标记菜单项
GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap,&m_bitmap);
5.将菜单设置不能使用
GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED);
6.右键弹出菜单
在OnRButtonDown函数中,添加如下代码:
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *pPopup=menu.GetSubMenu(0);
ClientToScreen(&point);//
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this);
7.添加菜单项,可用AppendMenu()在菜单的最后加子菜单,InsertMenu()在指定的位置加子菜单
menu1.AppendMenu(MF_STRING,ID_TEST1,"Test1");
menu1.AppendMenu(MF_STRING,ID_TEST2,"Test2");
menu1.InsertMenu(1,MF_BYPOSITION|MF_STRING, (UINT)ID_TEST1,"ID_TEST1");
8.删除菜单
用DeleteMenu()、RemoveMenu()函数来删除指定位置的菜单/菜单项
9.添加右键菜单
menu1.TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
原文地址:http://blog.csdn.net/u011058765/article/details/46564609