MFC 遍历菜单项 获取状态 改变状态

来源:互联网 发布:dubstep软件 编辑:程序博客网 时间:2024/06/07 00:24

// 遍历菜单void CTestDlg::OnBnClickedButton2(){CMenu* cMenuMain = GetMenu();int cntMain = cMenuMain->GetMenuItemCount();for(int i = 0; i < cntMain; i++){CString menuName;CMenu *cMenuSub = cMenuMain->GetSubMenu(i);int cntSub = cMenuSub->GetMenuItemCount();cMenuMain->GetMenuString(i, menuName, MF_BYPOSITION);MessageBox(menuName);for(int j = 0; j < cntSub; j++){cMenuSub->GetMenuString(j, menuName, MF_BYPOSITION);MessageBox(menuName);}}}// 获取状态与改变状态void CTestDlg::OnBnClickedButton3(){CMenu* cMainMenu = GetMenu();int cntMain = cMainMenu->GetMenuItemCount();for(int i = 0; i < cntMain; i++){CMenu* cSubMenu = cMainMenu->GetSubMenu(i);int cntSub = cSubMenu->GetMenuItemCount();for(int j = 0; j < cntSub; j++){int flag = cSubMenu->GetMenuState(j, MF_BYPOSITION);if(flag == MF_CHECKED)// 选择与未选中切换cSubMenu->CheckMenuItem(j, MF_BYPOSITION | MF_UNCHECKED);else if(flag == MF_UNCHECKED)cSubMenu->CheckMenuItem(j, MF_BYPOSITION | MF_CHECKED);else if(flag == MF_ENABLED)// enable与gray的切换   cSubMenu->EnableMenuItem(j, MF_BYPOSITION | MF_GRAYED);else if(flag == MF_GRAYED)   cSubMenu->EnableMenuItem(j, MF_BYPOSITION | MF_ENABLED);} }}