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

浙公网安备 33010602011771号