BOOL _CheckMenuItem(HMENU hMenu, UINT nID, BOOL bCheck) { BOOL bFound = FALSE; if(hMenu) { for(int nPos=0; nPos<GetMenuItemCount(hMenu); nPos++) { MENUITEMINFO mii = {sizeof(mii), MIIM_ID | MIIM_SUBMENU, 0}; if(GetMenuItemInfo(hMenu, nPos, TRUE, &mii)) { if(mii.hSubMenu)//弹出式菜单 { if(_CheckMenuItem(mii.hSubMenu, nID, bCheck)) { CheckMenuItem(hMenu, nPos, MF_BYPOSITION | (bCheck? MF_CHECKED:MF_UNCHECKED)); bFound = TRUE; } } if(mii.wID == nID) //ID匹配项 { CheckMenuItem(hMenu, nID, MF_BYCOMMAND | (bCheck? MF_CHECKED:MF_UNCHECKED)); bFound = TRUE; } } } } return bFound; } //应用示例 CMenu m_Menu; m_Menu.LoadMenu(IDR_XXXX); CMenu *pMenu = m_Menu.GetSubMenu(0); _CheckMenuItem(pMenu->m_hMenu, IDM_YYYY, TRUE); pMenu->TrackPopupMenu(0, point.x, point.y, this); 效果图