Форум программистов, компьютерный форум CyberForum.ru

Создать меню - C++

Восстановить пароль Регистрация
 
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.02.2010, 23:45     Создать меню #1
Здрасти, мне в универе задали сделать меню(есть вложенности). Я подумал что меню можно сделать с помощью классов и без них. Остановился на классах. Так вот, как лучше сделать: чтобы само меню было классом а его пункты подклассами, или пункты сделать классами а само меню подклассом, или меню-класс а его пункты-объекты класса, вообщем затрудняюсь как лучше сделать, подскажите. (яз с++)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2010, 23:45     Создать меню
Посмотрите здесь:

создать меню C++
Создать программу - меню «Калькулятор». C++
Необходимо создать меню к игре C++
C++ Создать меню
C++ Помогите создать меню в консоли
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
27.02.2010, 00:27     Создать меню #2
PointsEqual, делайте древовидную структуру меню без классов, с использованием только кейсов
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
27.02.2010, 00:30  [ТС]     Создать меню #3
почиму кейсами?( классами ведь лучше
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
27.02.2010, 00:32     Создать меню #4
PointsEqual, я не вижу смысла в использовании для этой задачи классов. Зачем нужен лишний перерасход времени, памяти и усложнение элементарного кода?
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
27.02.2010, 00:35  [ТС]     Создать меню #5
ну например есть меню:
1
2
3
4
при на жатии на 3, правее этого меню у меня должно выпасть подменю:
3.1
3.2
3.3

без классов разве проще это?
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
27.02.2010, 00:47     Создать меню #6
PointsEqual, на сколько я понял, то программа консольная. Такой код еще никто не отменял
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch(key)
{
    case 1:
        ...
        switch(subkey)
        {
            case 1:
                 ...
                 break;
            ...
        }
        break;
    case 2:
    ...
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.02.2010, 01:07     Создать меню #7
PointsEqual, Можно заморочиться создав класс для команд меню и класс-контейнер типа стек, в который будут помещаться объекты команд меню... Но это слишком заумно, тем более - для консольного приложения.
M128K145, предложил Вам классическую схему, которая, кстати, применяется не только для создания разветвлённого меню. В виндовс примерно так же сообщения обрабатываются... Вот
пример
C
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
    switch ( Message ) {
        ...
        case WM_VSCROLL :
            switch ( LOWORD(wParam) ){
                case SB_LINEDOWN :
                    if ( nVPos < nVDif )
                        ++nVPos;
                    break;
                case SB_LINEUP :
                    if ( nVPos > 0 )
                        --nVPos;
                    break;
                case SB_THUMBTRACK :
                    nVPos = HIWORD(wParam);
                    break;
            }
            SetScrollPos(hWnd, SB_VERT, nVPos, TRUE);
            InvalidateRect(hWnd, NULL, TRUE);
            return 0;
        case WM_HSCROLL :
            switch ( LOWORD(wParam) ){
                case SB_LINEDOWN :
                    if ( nHPos - nHDif )
                        ++nHPos;
                    break;
                case SB_LINEUP :
                    if ( nHPos > 0 )
                        --nHPos;
                    break;
                case SB_THUMBTRACK :
                    nHPos = HIWORD(wParam);
                    break;
            }
            SetScrollPos(hWnd, SB_HORZ, nHPos, TRUE);
            InvalidateRect(hWnd, NULL, TRUE);
            return 0;
        ...
    }
    return DefWindowProc(hWnd, Message, wParam, lParam);
кода, обрабатывающего прокрутку окна... Короче, если нет достаточно веской причины создавать классы, настоятельно рекомендую этим методом воспользоваться.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
27.02.2010, 01:15  [ТС]     Создать меню #8
за код спасибо.
можно по подробнее про "класс для команд меню"? что в него класть
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.02.2010, 01:35     Создать меню #9
PointsEqual, хороший пример создания меню с помощью классов есть в книжке "Стандартная библиотека С++ на примерах" П. Халперн. Она у меня бумажная, перепечатывать три страницы ломает, если честно... Но всё-таки со switch/case и проще, и нагляднее...
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
27.02.2010, 10:23  [ТС]     Создать меню #10
easybudda, посмотрел я эту книгу, ну кейсами полегче будит.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.03.2010, 21:28  [ТС]     Создать меню #11
M128K145, я сделал меню кейсами, это самый выгодный вриант), как ты в начале и сказал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2010, 22:15     Создать меню
Еще ссылки по теме:

C++ Создать меню настроек в консоли
создать меню C++
C++ Как создать меню с возвратом в консоли?

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

Или воспользуйтесь поиском по форуму:
neonneo
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 4
22.11.2010, 22:15     Создать меню #12
А возможно ли в switch и case добавить функции добавления ветви (прошу прощения за тавтологию),удалении и переименования?
Если да, то подскажите как это реализовать?
Yandex
Объявления
22.11.2010, 22:15     Создать меню
Ответ Создать тему
Опции темы

Текущее время: 20:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru