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

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

31.05.2009, 22:06. Показов 3195. Ответов 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 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, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru