MFC 菜单操作

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);

你可能感兴趣的:(mfc,菜单)