-----Исходное сообщение-----
От: Radovets Konstantin
Кому: kaev@yandex.ru
Дата: 9 марта 2000 г. 10:14
Тема: mfcbystep
Привет Артем!!!
Такого клевого сайта я еще нигде не видел.
У меня к тебе есть небольшой вопрос:
Ты не знаешь как можно добавлять галочки или ярлычки в меню.
Например, в меню "Вид" есть подменю "Cтрока состояния"
Искренне благодарен за ответ, Константин.
Итак, галочки так галочки. Нет бы кто написал, мол отдохни немного мы поможем, а тут галочки :-))) И прямо после 8 марта на больную голову :-)))
Делаем проект как MFC AppWizard лучше как SDI с именем MyMenu, остальное не важно. У этого проекта будет меню честное слово. Так вот давайте переключимся на вкладку Resource. Зайдем в меню и добавим пункт test в меню Help. Для того, чтобы вообще-то галочка была всего-то нужно установить флаг checked.

Теперь давайте привяжем к нему код. Лучше через Class Wizard. Если вы сделаете так же, как я то процедура обработки пункта меню должна быть такая, а код естественно сами допишите или возьмете проект.
void CMainFrame::OnHelpTest()
{
CMenu* cm=GetMenu();
if (cm->GetMenuState(ID_HELP_TEST,MF_BYCOMMAND) & MF_CHECKED)
cm->CheckMenuItem(ID_HELP_TEST,MF_UNCHECKED);
else
cm->CheckMenuItem(ID_HELP_TEST,MF_CHECKED);
}
Итак, есть функция у класса CWnd, который является дальним, но прямым родственником нашего класса, и который наложил существенный отпечаток на наш класс. Эта функция GetMenu
CMenu* GetMenu( ) const;
Она возвращает указатель на меню приложения. Вообще-то она может быть и NULL, но я то знаю что меню у меня есть вроде, поэтому проверять не стал, а наверно стоит :-). А дальше я пользуюсь функцией GetMenuState уже класса CMenu дабы убедиться, что меню на основе идентификатора ID_HELP_TEST с галочкой MF_CHECKED и меняю ситуацию на обратную используя функцию, которая умеет это делать CheckMenuItem. Во как.