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

Глобальная переменная(не пойму как точно сделать) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ программа на стек http://www.cyberforum.ru/cpp-beginners/thread305063.html
Надо разработать две функции,одна из которых вводит с клавивтуры набор данных в произвольной последовательности и размещает в памяти в переменном формате. Другая функция читает эти данные и выводит...
C++ Не компилирует на вижуал, как быть? Такая проблема: Я чайник. Есть программа, написанная под компилятор g++ вроде. Хотел ее на студии запустить. Не получилось. Вот текст: #include <iostream> #include <fstream> http://www.cyberforum.ru/cpp-beginners/thread305062.html
сделать первые буквы слов в строке заглавными C++
Нужно сделать первые буквы слов в строке заглавными. Вот сделал немного, а дальше не пойму как доделать. Получилось сделать чтобы он выводил только знаки и цифры в своих ( нужных местах), а...
C++ Упорядочить массив
Дано N-целых чисел от -50 до 50. Упорядочить их по возрастанию с помощью Шейкер-сортировки. Если кто-то это читает, помогите сделать, очень срочно нужно. Буду весьма благодарен:)
C++ Последовательность слов http://www.cyberforum.ru/cpp-beginners/thread305053.html
Задана последовательность слов. Игра заключается в том, что игроки по очереди называют слова из заданной последовательности. Правило, по которому называется слово заключается в следующем: если...
C++ Составить шаблоны рукописных букв русского алфавита. С помощью этих шаблонов написать пять любых слов, состоящих из 5-7 букв каждое. Составить шаблоны рукописных букв русского алфавита. С помощью этих шаблонов написать пять любых слов, состоящих из 5-7 букв каждое. подробнее

Показать сообщение отдельно
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
26.05.2011, 00:22  [ТС]
А вам нужно расписать как для малолетних детей?

Вы почитайте с включенной головой, поди поможет, как написать это проще я не представляю.

Добавлено через 13 минут
Для grrr и кто не в состоянии прочитать. Копия первого сообщения, но теперь с тегами B.

Всем привет.
Делаю курсовик. Часть написание курсовика это создание меню. Меню должно быть выпадающим, то есть когда нажмем на какой-либо пункт выпадет еще одно меню.

Как я все это реализовал?
Есть функция MakeVertMenu в которую мы передадим какой-то параметр. Например для меню Файл этот параметр 1, а для Правка параметр 2. Внутри функции в зависимости от параметра(1 или 2) я вывожу или пункты меню для Файла или для меню Правка.

Как собственно работает это все?
Я разметил поля, то есть для того чтобы запустить программу Файл-Открыть нужно кликнуть в поле X < 10, Y = 1, чтобы запустить программу Файл-Закрыть нужно нажать в поле X<10, Y=2.

Проблема
Все в общем-то хорошо, когда я нажимаю на файл, выпадает меню. Когда нажимаю на Файл-Открыть запускается нужная программа. Проблема в чем? Когда меню Файл закрыто и я нажму в поле X<10, y = 2 или x<10, y = 1, программа тоже запустится. Вообще так и должно быть, я разметил поля и когда нажимаю на них запускаются программы.

Как пытался эту проблему решить?
Я сделал глобальную переменную static int return_code = -1; Когда мы нажимаем на файл (то есть вызываем MakeVertMenu(1)), return_code становится 1, а когда на Правка(MakeVertMenu(2)) retun_code станет 2. В коде(там где размечены поля) я написал условия. Если return_code = 1, то разметить поля так. Если return_code = 2, разметить так. В конце этих условиях строка return_code = -1;

В теории все в порядке. На практике ничего не выходит.
Когда нажимаю на Файл return_code становится 1, а после, когда нажимаю на Файл-Открыть программа не запускается, а return_code становится -1 и все.

Выручайте, уважаемые.

Код в студию.
Считываем позицию мыши и размечаем поля:
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
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
void MouseEventProc(MOUSE_EVENT_RECORD mer) {
    COORD xy;
    switch(mer.dwEventFlags) {
    case 0:
        if(mer.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) {
            xy.X = mer.dwMousePosition.X;
            xy.Y = mer.dwMousePosition.Y;
            if(xy.Y == 1 && xy.X <= 18) {
                SetConsoleCursorPosition(hStdout, xy);
                SetPosCursor(20, 20);
                printf("Vertical Menu Selected # 1");
            }
            if(xy.Y != 0) {
                SetConsoleCursorPosition(hStdout, xy);
                SetPosCursor(20,20);
                printf("                ");
                SetPosCursor(20,20);
                printf(" x = %d     y = %d", xy.X, xy.Y);
                SetPosCursor(0, 1);
                MakeHorizontalMenu(4);
                MakeVerticalMenu(0);
                return_code = -1;
            }
 
/////////////////////////////////// Первое вертикальное меню ///////////////////////////////////
                if(xy.X <= 18 && xy.Y == 0) {
                    SetPosCursor(20,20);
                    printf("Menu select #1          ");
                    MakeHorizontalMenu(0);
                    
                    MakeVerticalMenu(0);
                    MakeVerticalMenu(1);
 
                }
 
                if(return_code == 1) {
                    if(xy.X <= 18 && xy.Y == 1) {
                        SetPosCursor(20,20);
                        printf("Vertical menu select #1         ");
                        MakeHorizontalMenu(0);
                    }
 
                    if(xy.X <= 18 && xy.Y == 2) {
                        SetPosCursor(20,20);
                        printf("Vertical menu select #2         ");
                        MakeHorizontalMenu(0);
                    }
                                        return_code = -1;
                }
/////////////////////////////////// Конец первого вертикального меню ///////////////////////////////////
 
/////////////////////////////////// Второе вертикальное меню ///////////////////////////////////
                if(xy.X > 18 && xy.X < 29 && xy.Y == 0) {
                    SetPosCursor(20, 20);
                    printf("Menu select #2          ");
                    MakeHorizontalMenu(1);
 
                    MakeVerticalMenu(0);
                    MakeVerticalMenu(2);
 
                }
                
                if(return_code == 2) {
 
                    if(xy.X > 18 && xy.X < 29 && xy.Y == 1) {
                        SetPosCursor(20, 20);
                        printf("Vertical Menu 2 select #1           ");
                        MakeHorizontalMenu(1); 
                    }
 
                    if(xy.X > 18 && xy.X < 29 && xy.Y == 2) {
                        SetPosCursor(20, 20);
                        printf("Vertical Menu 2 select #2           ");
                        MakeHorizontalMenu(1);
                    }
 
                    if(xy.X > 18 && xy.X < 29 && xy.Y == 3) {
                        SetPosCursor(20, 20);
                        printf("Vertical Menu 2 select #3           ");
                        MakeHorizontalMenu(1);
                    }
 
                    if(xy.X > 18 && xy.X < 29 && xy.Y == 4) {
                        SetPosCursor(20, 20);
                        printf("Vertical Menu 2 select #4           ");
                        MakeHorizontalMenu(1);
                    }
                                        return_code = -1;
                }
/////////////////////////////////// Конец второго вертикального меню ///////////////////////////////////
 
                if(xy.X >=77 && xy.X < 80 && xy.Y == 0) {
                    MakeHorizontalMenu(2);
                    SetPosCursor(20, 20);
                    printf("Exit        / Press any key!");
                    _getch();
                    exit(1488);
                }
        }
    }
    SetPosCursor(20, 22);
    cout << return_code << "    ";
}
Функция MakeVertMenu для создания вертикального меню.
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
void MakeVerticalMenu(int menu_selected) {
    
    if(menu_selected == 0) {
        int i = 0;
        while(i != 5) {
            SetPosCursor(0, 1+i); printf("\t\t\t\t\t\n");
            i++;
        }
        SetPosCursor(0, 1);
 
    }
 
    if(menu_selected == 1) {
        CHAR *names[] = {"Element count   ", "Default values  "};
 
        for(int i = 0; i < 2; i++) {
            if(i == menu_selected)
                SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_INTENSITY);
            if(i != menu_selected)
                SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
            SetPosCursor(0, i+1);
            cout << names[i];
        }
 
        return_code = 1;
    }
 
    if(menu_selected == 2) {
        CHAR *names[] = {"Base class    ", "String ident  ",
                        "Self class    ", "Operands      "};
 
        for(int i = 0; i < 4; i++) {
            SetPosCursor(18, i+1);
            cout << names[i];
        }
        return_code = 2;
    }
        
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru