// 遍歷菜單
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);
}
}
}