动态修改Menu
//主菜单对象
CMenu * pMainMenu=AfxGetMainWnd()->GetMenu();
CMenu* pSubMenu=NULL;
//查找ID_TEST_HELLO
for(int i=0;i<(int)pMainMenu->GetMenuItemCount();i++)
{
pSubMenu=pMainMenu->GetSubMenu(i);
if(pSubMenu&& pSubMenu->GetMenuItemID(0)==ID_TEST_HELLO)
{
break;
}
}
//动态增加菜单
pSubMenu->AppendMenuW(0,ID_TEST_ADD1,L"动态增加1");
//在1后加另外2
pSubMenu->InsertMenuW(ID_TEST_ADD1,MF_BYCOMMAND,ID_TEST_ADD2,L"动态增加2");
//修改
pSubMenu->ModifyMenuW(ID_TEST_ADD2,MF_BYCOMMAND,ID_TEST_ADD3,L"动态修改3");
//删除
pSubMenu->RemoveMenu(2,MF_BYPOSITION);
单选
void CModifyMenuDlg::OnRadio1()
{
// TODO: 在此添加命令处理程序代码
m_mode=mode1;
}
void CModifyMenuDlg::OnRadio2()
{
// TODO: 在此添加命令处理程序代码
m_mode=mode2;
}
void CModifyMenuDlg::OnUpdateRadio1(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->SetRadio(m_mode==mode1);
}
void CModifyMenuDlg::OnUpdateRadio2(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->SetRadio(m_mode==mode2);
}
复选
void CModifyMenuDlg::OnUpdateCheck1(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->SetCheck(1);
}
触发命令
AfxGetMainWnd()->SendMessage(WM_COMMAND,ID_FILE_OPEN);
弹出
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenuW(0,ID_TEST_POPU_1,L"1");
menu.AppendMenuW(MF_CHECKED,ID_TEST_POPU_2,L"2");
menu.AppendMenuW(MF_SEPARATOR,0,L"");
menu.AppendMenuW(MF_GRAYED,ID_TEST_POPU_3,L"3");
menu.CheckMenuRadioItem(ID_TEST_POPU_3,ID_TEST_POPU_4,ID_TEST_POPU_4,MF_BYCOMMAND);
menu.TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
menu.DestroyMenu();
CDialog::OnRButtonDown(nFlags, point);