Предположим, ваше меню называется IDR_MAINFRAME
:
Создайте mainFrame
и добавьте IDR_MAINFRAME
меню:
CMainFrame* pFrame = new CMainFrame;
pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL);
Вы должны получить главное меню следующим образом:
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME);
Теперь вы можете выбрать определенный элемент c:
menu.EnableMenuItem (1, MF_BYPOSITION|MF_DISABLED|MF_GRAYED);
pFrame->SetMenu(&menu);
См. Результат ниже:
Обратите внимание, что Edition
- это главное меню (аналогично меню View) для моего приложения.
Включение вашего меню (View menu
) динамически вызывайте EnableMenuItem второй раз, например:
menu.EnableMenuItem (1, MF_BYPOSITION);
Надеюсь, это поможет вам.
Обновление
Мне также пришлось использовать этот код, чтобы получить строку меню обновить визуально:
DrawMenuBar();
С этим кодом меню визуально не обновлялось до тех пор, пока на текст меню не была наведена мышь.