153 / 137 / 34
Регистрация: 23.05.2009
Сообщений: 275
1

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

31.05.2009, 22:06. Показов 2822. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2009, 22:06
Ответы с готовыми решениями:

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

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

Динамическая смена имени ресурсного файла изображения
Добрый день уважаемые форумчане! небольшой кусок кода: int z1,q1; z1 =...

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

3
124 / 122 / 0
Регистрация: 30.03.2009
Сообщений: 766
31.05.2009, 22:11 2
нужно вручную ставить и снимать флаги при кликах на соответствующие пункты... есть, наверное, какая-нибудь функция, типа editmenu...
0
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
31.05.2009, 22:26 3
Вот нашел пример
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
153 / 137 / 34
Регистрация: 23.05.2009
Сообщений: 275
31.05.2009, 23:47  [ТС] 4
Спасибо, 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2009, 23:47

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.