-----Исходное сообщение----- От: 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. Во как.