Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
154 / 138 / 34
Регистрация: 23.05.2009
Сообщений: 275

Создание меню без использования ресурсного файла

31.05.2009, 22:06. Показов 3198. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю меню при помощи функций CreateMenu(),CreatePopupMenu(). Добавлял пункты меню функцией

C++
1
2
3
4
5
6
BOOL AppendMenu(
   HMENU hMenu,
   UINT nFlags,
   UINT_PTR nIDNewItem ,
   LPCTSTR lpszNewItem  
);
Все было бы замечательно, но мне нужно также создать таким образом пукнты в меню при нажатии на который устанавливался флажок, а при повторном нажатии он снимался и тд и тп. НАшел в МСДН описание функции AppendMenu(). Одними из значений которые может принимать может второй параметр были MF_CHECKED / MF_UNCHECKED.Таким образом получилось нечто такое:
C++
1
2
3
4
5
6
7
HMENU hMenu=CreateMenu(), hM1=CreatePopupMenu();
AppendMenu(hM1,MF_STRING,100,"Пункт1");
AppendMenu(hM1,MF_STRING,101,"Пункт2");
AppendMenu(hM1,MF_SEPARATOR,102,"");
AppendMenu(hM1,MF_CHECKED,103,"Пункт3");
AppendMenu(hMenu,MF_POPUP,(UINT)hM1,"Меню1");
SetMenu(hWnd,hMenu);
Меню выводится, однако пункт, который должен был быть с флагом, был заранее отмечен флагом и на попытки снять флажок никак не реагировал. Подскажите как мне сделать таки меню с пунктами чтобы можно было отмечать флажками не используя ресурсные файлы?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2009, 22:06
Ответы с готовыми решениями:

Меню без использования ресурсов
#include <windows.h> #include <commctrl.h> const IDM_Enable_Disable = 0; const IDM_Exit = 1; const IDM_About = 2; const...

Вёрстка адаптивного меню-гамбургер без использования фреймворков
Всем привет! Необходимо сверстать адаптивное гамбургер-меню без использования фреймворков...

Динамическая смена имени ресурсного файла изображения
Добрый день уважаемые форумчане! небольшой кусок кода: int z1,q1; z1 = Integer.parseInt(sensor); for (q1 = 0; q1 < 101; q1++)...

3
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
31.05.2009, 22:11
нужно вручную ставить и снимать флаги при кликах на соответствующие пункты... есть, наверное, какая-нибудь функция, типа editmenu...
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
31.05.2009, 22:26
Вот нашел пример
C++
1
2
3
4
5
6
7
8
9
              
                      if(GetMenuState(hMenu, IDM_DISABLE, MF_BYCOMMAND) &MF_CHECKED)
                     {
                      CheckMenuItem(hMenu, IDM_DISABLE,MF_BYCOMMAND | MF_UNCHECKED);
                     }
                     else
                     {
                      CheckMenuItem(hMenu, IDM_DISABLE,MF_BYCOMMAND | MF_CHECKED);
                     }
1
154 / 138 / 34
Регистрация: 23.05.2009
Сообщений: 275
31.05.2009, 23:47  [ТС]
Спасибо, TGrey[WoLf], подсказал в каком направлении работать. Если комунибудь понадобится, то вот как должен выглядеть обработчик сообщений:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
.....
switch (messg)
{
case WM_COMMAND:
     switch (wParam)
    {
             case <id_кнопки_меню>:
                    if(GetMenuState(GetSubMenu(GetMenu(hWnd),0),<id_кнопки_меню>,MF_BYCOMMAND &MF_CHECKED)==MF_CHECKED)
              {
                CheckMenuItem((GetSubMenu(GetMenu(hWnd),0)), <id_кнопки_меню>, MF_UNCHECKED);
               }
                       else
                    {
                              CheckMenuItem((GetSubMenu(GetMenu(hWnd),0)), <id_кнопки_меню>, MF_CHECKED);
                            };                   
        break;
       default:
               return FALSE;
      };
default:
       return FALSE;
};
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2009, 23:47
Помогаю со студенческими работами здесь

За один просмотр файла и без использования дополнительных файлов вывести элементы файла f в указанном порядке
Если можете сделайте программу (сам пытался понять как делать но не получается +времени нет готовлюсь к экзамену) За один просмотр...

Очередь. За один просмотр файла без использования дополнительных файлов напечатать элементы файла в порядке
HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!! Используя очередь, решить...

Создание приложения без использования Storyboard
Здравствуйте, дано задание (в названии). Совсем новичок в этой теме. Есть ли туториалы, как это делать (добавлять различные элементы, как...

Создание 2D игр без использования движка
Подскажите где можно найти много инфы по этой теме. Подойдут недоделанные до конца проекты, и исходники и экзешники, просто полезное чтиво....

Создание линии без использования Line
Прошу помогите! мучаюсь второй день, не могу придумать как сделать общую процедуру, чтобы рисовать линию в паскаль АВС без использования...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru