Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221

В MFC приложении управление видимостью пунктов меню

09.11.2022, 13:55. Показов 2643. Ответов 25

Студворк — интернет-сервис помощи студентам
Здравствуйте! Для моего приложение требуется управлять пунктом меню автосемплер, содержащим выпадающий список. При наличии этого прибора пункт меню виден, при отсутствии прибора - линейка меню смыкается, и этого пункта не видно. Я не понимаю, как это сделать, помогите пожалуйста.





Должно получиться вот так

0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.11.2022, 13:55
Ответы с готовыми решениями:

Управление видимостью компонент при помощи меню
Не пойму никак, как управлять компонентами меню? Создание и все такое получается, нет проблем. ВОТ менять компоненты с учетом выбранной...

Стиль Меню и Тулбара в MFC приложении
Добрый день! Возникла проблема, которую на данный момент не удалось решить после исследования различных статей в интернете! Необходимо...

Динамическое управление состоянием элементов меню в Windows приложении
Уважаемые присутствующие :help:! Если кто может, подскажите, в каком направлении нужно двигаться в решении такой задачки : Обычное...

25
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
10.11.2022, 11:03  [ТС]
Студворк — интернет-сервис помощи студентам
Алексей1153,
0
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
10.11.2022, 11:08  [ТС]
Алексей1153,
0
фрилансер
 Аватар для Алексей1153
6510 / 5772 / 1135
Регистрация: 11.10.2019
Сообщений: 15,418
10.11.2022, 11:28
ага, я уже сам увидел. Хендл этого меню нулевой. Он, скорее всего, не участвует в движухе

посидел, повспоминал. Как сами менюшки блокировать - не разобрался (скорее всего, придётся таки извлекать-вставлять обратно "вручную")

а вот пунктами управлять можно так. Например, хотим гасить пункт ID_FILE_NEW в зависимости от условия

добавляем объявление обработчика
MainFrm.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
class CMainFrame : public CFrameWndEx
{
// Generated message map functions
protected:
...
...
    afx_msg void OnUpdate_ID_FILE_NEW(CCmdUI* pCmdUI);// <<<<<<<<<<< вот это
...
...
    DECLARE_MESSAGE_MAP()
 
};
добавляем нужные макросы для связывания команды и обработчика + определение обработчика

MainFrm.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)
...
...
    ON_UPDATE_COMMAND_UI(ID_FILE_NEW, &CMainFrame::OnUpdate_ID_FILE_NEW)
...
...
END_MESSAGE_MAP()
 
void CMainFrame::OnUpdate_ID_FILE_NEW(CCmdUI* pCmdUI)
{
    pCmdUI->Enable(0); //тут мы сейчас просто всегда дизАблим
}
1
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
10.11.2022, 12:20  [ТС]
Я нашёл решение для своего случая.
В функции InitInstance() главного файла, после вызова CMainFrame::OnCreate() делаю вызов строки

C++
1
pMainFrame->GetMainMenu().SetToolBarBtnText(7, NULL,false,false);
Так как у меня класс CMainFrame произведён от другого, в котором как раз в защищённой области сидит объект класса CMFCMenuBar, я вызываю его через публичный метод GetMainMenu(). Далее просто меняю видимость кнопки меню за счёт изменения флагов, т.е.
C++
1
2
pMainFrame->GetMainMenu().SetToolBarBtnText(7, NULL,false,false); // скрывает кнопку меню с указанным индексом 7
pMainFrame->GetMainMenu().SetToolBarBtnText(7, NULL,true,true); // показывает кнопку с указанным индексом
Большое спасибо всем, кто участвовал, подсказывал!
Спасибо за уделённое вами время!
1
фрилансер
 Аватар для Алексей1153
6510 / 5772 / 1135
Регистрация: 11.10.2019
Сообщений: 15,418
10.11.2022, 12:31
Цитата Сообщение от MaximSergeevith Посмотреть сообщение
SetToolBarBtnText(7,
магическая константа, однако. Нужно сделать ей имя
0
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
10.11.2022, 12:34  [ТС]
Алексей1153, ну это в любом случае тесты, а так конечно через enum все пункты перечислить надо и брать нужный
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.11.2022, 12:34

Управление видимостью
1с77 Есть некий документ, в форме которого несколько слоев. При открытии документа (в процедуре ПриОткрытии) анализируется один из...

Управление Видимостью
Коллеги, подскажите, pls, в чем может быть дело. Пробую показывать/прятать элемент liMembers (типа listbox) в зависимости от содержимого...

Управление видимостью формы
Как сделать, чтобы при запуске приложения главная форма не показывалась автоматически. Пробовал разные варианты: 1. В конструкторе формы...

Управление видимостью GroupBox
Здравствуйте. Подскажите как при нажатии на Button можно было скрывать и отображать groupbox и все компоненты которые находятся в нем?

Управление видимостью кнопок
Ребят, необходимо реализовать вот такую не простую задачу. Увы, мой склад ума не позваляет мне это сделать, запутался окончательно. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru