Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 16.09.2012
Сообщений: 7

Плавающее меню

24.10.2013, 03:51. Показов 822. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, форумчане! Прошу помощи в следующей задаче:

Плавающее меню содержит строки "Спрятать", "Показать", "Масштаб", "Свойства". Строка "Масштаб" указывает на временное меню из четырех зависимых строк: "50%", "100%", "150%" и "200%", при выборе одна из которых отмечается кружочком.

Собственно всё работает кроме одного: когда выбираю одну из четырёх строк в строке "масштаб" - пропадает первое плавающее меню, остаётся только временное меню, где четыре строки ("50%", "100%", "150%" и "200%"). Подскажите как исправить
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#include <windows.h>
#include <tchar.h>
 
#define CM_EDIT_HIDE 2003 
#define CM_EDIT_SHOW 2004 
#define CM_EDIT_SCALE 2005
#define CM_SCALE_50 2006
#define CM_SCALE_100 2007
#define CM_SCALE_150 2008
#define CM_SCALE_200 2009
#define CM_EDIT_PROPERTIES 2010
 
BOOL RegClass(WNDPROC, LPCTSTR, UINT);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
HINSTANCE hInstance;
TCHAR szClass[] = TEXT("FloatMenu");
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow) 
{ 
    MSG msg; 
    HWND hwnd; 
    hInstance = hInst; 
    if (!RegClass(WndProc, szClass, COLOR_WINDOW)) return FALSE;
    hwnd = CreateWindow(szClass, TEXT("Окно с плавающим меню. Вариант #14"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, 
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, hInstance, NULL); 
    if (!hwnd) return FALSE;
    while(GetMessage(&msg, 0, 0, 0)) 
        DispatchMessage(&msg); 
    return msg.wParam;
}
 
BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground)
{ 
    WNDCLASS wc; 
    wc.style = wc.cbClsExtra = wc.cbWndExtra = 0; 
    wc.lpfnWndProc = Proc; 
    wc.hInstance = hInstance; 
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); 
    wc.hCursor = LoadCursor(NULL, IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)(brBackground +1); 
    wc.lpszMenuName = NULL; 
    wc.lpszClassName = szName; 
    return (RegisterClass(&wc) != 0);
}
 
BOOL CreateMenuItem(HMENU hMenu, TCHAR *str, UINT uIns, UINT uCom, HMENU hSubMenu, BOOL flag, UINT fType)
{ 
    MENUITEMINFO mii; 
    mii.cbSize = sizeof(MENUITEMINFO);
    mii.fMask = MIIM_STATE | MIIM_TYPE | MIIM_SUBMENU | MIIM_ID; 
    mii.fType = fType; 
    mii.fState= MFS_ENABLED; 
    mii.dwTypeData = str; 
    mii.cch = sizeof(str); 
    mii.wID = uCom; 
    mii.hSubMenu = hSubMenu; 
    return InsertMenuItem(hMenu, uIns, flag, &mii);
}
 
BOOL SetMenuItem(HMENU hMenu, UINT uIns, UINT fState, BOOL flag)
{ 
    MENUITEMINFO mii; 
    mii.cbSize = sizeof(MENUITEMINFO); 
    mii.fMask = MIIM_STATE | MIIM_ID; 
    mii.fState = fState; 
    mii.wID = uIns; 
    return SetMenuItemInfo( hMenu, uIns, flag, &mii);
}
 
 
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static HMENU hFloatMenu, hScaleMenu;
    switch (msg)
    {
        case WM_COMMAND:
        { 
            switch (LOWORD(wParam)) 
            { 
                case CM_EDIT_HIDE:
                { MessageBox(hwnd, TEXT("Спрятать"), TEXT("Сообщение"), MB_OK); return 0; }
                case CM_EDIT_SHOW:
                { MessageBox(hwnd, TEXT("Показать"), TEXT("Сообщение"), MB_OK); return 0; }
                case CM_SCALE_50: 
                {
                    SetMenuItem( hScaleMenu, CM_SCALE_50, MFS_CHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_100, MFS_UNCHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_150, MFS_UNCHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_200, MFS_UNCHECKED, FALSE);
                    return 0;
                }
                case CM_SCALE_100: 
                { 
                    SetMenuItem( hScaleMenu, CM_SCALE_50, MFS_UNCHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_100, MFS_CHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_150, MFS_UNCHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_200, MFS_UNCHECKED, FALSE);
                    return 0;
                }
                case CM_SCALE_150: 
                { 
                    SetMenuItem( hScaleMenu, CM_SCALE_50, MFS_UNCHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_100, MFS_UNCHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_150, MFS_CHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_200, MFS_UNCHECKED, FALSE);
                    return 0;
                }
                case CM_SCALE_200:
                { 
                    SetMenuItem( hScaleMenu, CM_SCALE_50, MFS_UNCHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_100, MFS_UNCHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_150, MFS_UNCHECKED, FALSE);
                    SetMenuItem( hScaleMenu, CM_SCALE_200, MFS_CHECKED, FALSE);
                    return 0;
                }
                case CM_EDIT_PROPERTIES:
                { MessageBox(hwnd, TEXT("Свойства"), TEXT("Сообщение"), MB_OK); return 0; }
            } 
            return 0;
        }
        case WM_RBUTTONDOWN:
        {
            DWORD xyPos = GetMessagePos(); 
            WORD xPos = LOWORD(xyPos), 
                 yPos = HIWORD(xyPos); 
            hFloatMenu = CreatePopupMenu();
            hScaleMenu = CreatePopupMenu();
            int i = 0;
            CreateMenuItem( hScaleMenu, TEXT("&50%"), i++, CM_SCALE_50, NULL, FALSE, MFT_RADIOCHECK); 
            CreateMenuItem( hScaleMenu, TEXT("&100%"), i++, CM_SCALE_100, NULL, FALSE, MFT_RADIOCHECK);
            CreateMenuItem( hScaleMenu, TEXT("&150%"), i++, CM_SCALE_150, NULL, FALSE, MFT_RADIOCHECK); 
            CreateMenuItem( hScaleMenu, TEXT("&200%"), i++, CM_SCALE_200, NULL, FALSE, MFT_RADIOCHECK);
            CreateMenuItem( hFloatMenu, TEXT("Спрятать"), i++, CM_EDIT_HIDE, NULL, FALSE, MFT_STRING); 
            CreateMenuItem( hFloatMenu, TEXT("Показать"), i++, CM_EDIT_SHOW, NULL, FALSE, MFT_STRING); 
            CreateMenuItem( hFloatMenu, TEXT("&Масштаб"), i++, 0, hScaleMenu, FALSE, MFT_STRING);
            CreateMenuItem( hFloatMenu, TEXT("Свойства"), i++, CM_EDIT_PROPERTIES, NULL, FALSE, MFT_STRING);
            TrackPopupMenu( hFloatMenu, TPM_CENTERALIGN | TPM_LEFTBUTTON | TPM_VCENTERALIGN, xPos, yPos, 0, hwnd, NULL);
            TrackPopupMenu( hScaleMenu, TPM_NONOTIFY, xPos, yPos, 0, hwnd, NULL);   
            return 0;
        }
        case WM_DESTROY:
        {
            DestroyMenu(hScaleMenu);
            DestroyMenu(hFloatMenu);
            PostQuitMessage(0);
            return 0;
        }
    }
    return DefWindowProc(hwnd, msg, wParam, lParam);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2013, 03:51
Ответы с готовыми решениями:

Плавающее меню
Здраствуйте уважаемые программисты!:) Вот имеется меню:Main MENU{ POPUP{ MENUITEM &quot;About&quot; , MI_ABOUT } Как из этого всплывающего...

Плавающее меню
Нужно сделать плавающее меню, которое сначала в положении relative, когда проскроливаешь до момента, когда меню упирается в верх экрана,...

Плавающее меню
Доброго времени суток, уважаемые форумчане! В моём распоряжении есть следующий код прокрутки плавающего меню: $(function(){ var...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2013, 03:51
Помогаю со студенческими работами здесь

Плавающее меню
Добрый день. Такой вопрос, мне нужно создать меню точно такое же как тут: http://lokeshdhakar.com/projects/lightbox2/ Со всеми...

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

Плавающее меню
есть меню нужно сделать чтоб оно двигалось за пользователем &lt;!-- ---íà÷àëî âûäâèãàþùåãîñÿ...

Плавающее меню
Привет. Здесь меню перемещается вместе с прокруткой страницы (плавающее) http://demo-shop.whatasoft.net/]. Как это происходит? По js...

Плавающее меню
Всем привет! Использую CMS WordPress и шаблон для неё. Работает всё отлично. Но вот недавно зашёл на сайт с планшета и увидел, что меню не...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru