Menu

 動態修改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);



 

發佈了51 篇原創文章 · 獲贊 23 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章