MFC menu

//delete

CMenu *pMenu = GetMenu();

pMenu->RemoveMenu(0, MF_BYPOSITION);

 

//modify

CMenu *pMenu = GetMenu()->GetSubMenu(3);

int nPos = FindMenuItem(pMenu, _T("Java"));
if (nPos > 0){
pMenu->ModifyMenu(nPos, MF_BYPOSITION, nPos, _T("menuName1"));
}

//modify:checked or add separator line

//SubMenu->AppendMenu(MF_ENABLED | MF_SEPARATOR, idBase, _T("Separator"));
//pSubMenu->AppendMenu(MF_ENABLED | MF_STRING | MF_CHECKED, idBase+1, _T"MenuName");

//add or insert

pMenu->AppendMenu(MF_STRING, 10009, _T("C++ DESIGN"));
UINT uCount = pMenu->GetMenuItemCount();

CMenu menuJavaScript;
menuJavaScript.CreatePopupMenu();
pMenu->InsertMenu(uCount, MF_POPUP | MF_BYPOSITION, (UINT)menuJavaScript.Detach(), _T("Js design"));

GetMenu()->RemoveMenu(3, MF_BYPOSITION);

 

//message mapping

ON_COMMAND(ID_ITEM_ITEM1, &CSfViewer::OnMnItemItem)

or 

ON_COMMAND_RANGE(DATEMASK_FILTER_MENU_BASE_ID, DATEMASK_FILTER_MENU_END_ID, &CSfViewer::OnDateMaskMenu)

...

void CSfViewer::OnMnItemItem(void)

{

...

}

void CSfViewer::OnDateMaskMenu(UINT id)
{

....
}

 

//pop menu

void CSfViewer::OnNMRClickListItemdata(NMHDR *pNMHDR, LRESULT *pResult)
{
  LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  CMenu menu;
  VERIFY (menu.LoadMenu(IDR_MENU1));
  CMenu *pPopup;
  pPopup = (CMenu *)menu.GetSubMenu(0);
  if(pPopup){
   CWnd *pWndPopupOwner = this;
   while (pWndPopupOwner->GetStyle() & WS_CHILD){
    pWndPopupOwner = pWndPopupOwner->GetParent();
   }
   OnLoadListItemRClickMenu(pPopup,ID_ITEM_ITEM1,10);
   CPoint point;
   ::GetCursorPos(&point);
   pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,pWndPopupOwner);
  }

  *pResult = 0;
}

//Check menu item (radio,单选)

CMenu *pSubMenu = GetMenu()->GetSubMenu(2);
int cnt = sizeof(g_dateFilterMenu) / sizeof(g_dateFilterMenu[0]);
pSubMenu->CheckMenuRadioItem(DATEMASK_FILTER_MENU_BASE_ID, DATEMASK_FILTER_MENU_BASE_ID + cnt - 1, curCheckedIndex, MF_BYCOMMAND);

 

//复选

UINT check = m_keyTemplateHead[index].selected ? MF_UNCHECKED : MF_CHECKED;
pSubMenu->CheckMenuItem(id, MF_BYCOMMAND | check);

posted @ 2019-02-22 08:48  Reboost  阅读(444)  评论(0)    收藏  举报