BOOL CCustomMenu::ChangeMenuItem(CMenu* pMenu, BOOL bTop) { if(pMenu != NULL) { int itemCount = pMenu->GetMenuItemCount(); for (int i = 0 ; i < itemCount ; i++) { int itemId = pMenu->GetMenuItemID(i); CMenu* pSubMenu = pMenu->GetSubMenu(i); if(itemId == -1 && bTop) //Application menu or context menu. { m_MenuInfoList[m_uItemIndex].m_miiItemId = TOPMOST_MENU; } else if (itemId == -1) //Child menu. { m_MenuInfoList[m_uItemIndex].m_miiItemId = CHILD_MENU; m_MenuInfoList[m_uItemIndex].m_miiIconIndex = m_uIconIndex; m_uIconIndex++; } else if (itemId == 0) //Separator. { m_MenuInfoList[m_uItemIndex].m_miiItemId = SEPARATOR_MENU; } else if(itemId > 0) //Common menu item. { m_MenuInfoList[m_uItemIndex].m_miiItemId = itemId; m_MenuInfoList[m_uItemIndex].m_miiIconIndex = m_uIconIndex; m_uIconIndex++; } pMenu->GetMenuString(i, m_MenuInfoList[m_uItemIndex].m_miiItemText, MF_BYPOSITION); pMenu->ModifyMenu(i, MF_BYPOSITION | MF_OWNERDRAW | MF_STRING, m_MenuInfoList[m_uItemIndex].m_miiItemId, (LPCTSTR)(&m_MenuInfoList[m_uItemIndex])); m_uItemIndex++; //Item index increase. if(pSubMenu) { ChangeMenuItem(pSubMenu); } } } return TRUE; }
void CNewMenu::ChangeMenuItem(CMenu *pMenu) { int itemCount=pMenu->GetMenuItemCount(); for(int i=0;i<itemCount;i++) { CString *pText=new CString; UINT itemID=pMenu->GetMenuItemID(i);//获取菜单项ID号 pMenu->GetMenuString(i,*pText,MF_BYPOSITION);//获取菜单文本 //ModifyMenu函数最后一个参数对应DRAWITEMSTRUCT结构里的itemData变量 pMenu->ModifyMenu(i,MF_OWNERDRAW|MF_BYPOSITION|MF_STRING,itemID,(LPSTR)pText); //pMenu->ModifyMenu(i,MF_BYPOSITION|MF_STRING,itemID,(LPSTR)pText); if(itemID==-1)//如果是一个弹出式菜单 { ChangeMenuItem(pMenu->GetSubMenu(i)); } m_relea.push_back(pText); } }