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

Меню в консоли - Ввод данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Раздельная компиляция и шаблоны http://www.cyberforum.ru/cpp-beginners/thread765921.html
Есть 3 файла с кодом: 1) foo.hpp template<typename T> class foo { public: T bar; foo(); ~foo(); };
C++ muparser что значит метод eval в muparser??? и от какого английского слова сокращение http://www.cyberforum.ru/cpp-beginners/thread765917.html
Оъяснение C++
Как объяснить преподавателю что обозначает { if (massiv%2 == 0) -???? printf(" %d ",massiv); - это я знаю }
C++ Вложенный шаблонный класс(разделение на файлы)
Есть шаблонный класс для примера A<T> , в него вложен класс B<T> template<class T> class A { public: template<class T> class B { public:
C++ Найти сумму содержимого массива и выдать общий объем продаж за год http://www.cyberforum.ru/cpp-beginners/thread765885.html
предположим,что вы продаете книгу по программированию.Напиши программу,которая предложит ввести ежемесячные объемы продаж в течении года(в количестве книг).Программа должна использовать цикл,в котором выводится приглашение с названием месяца применяя массив указателей на char(или массив объектов string) инициализированный строками-названиями месяцев, и сохраняя введенные значения в массиве типа...
C++ контейнеры (литература) На сегодняшний момент меня заинтересовали контейнеры) Может кто-то подсказать какую-то литературу по ним? В интернете искал, но ничего нормального не мог найти .. подробнее

Показать сообщение отдельно
miragex
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 135

Меню в консоли - Ввод данных - C++

19.01.2013, 00:22. Просмотров 445. Ответов 1
Метки (Все метки)

Доброй ночи
Просьба не судить строго мой код - я только учусь!
Вот код меню:
Код
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>

struct menu_code
{
    char* nameMenu;
    int data;
};

struct menu_code menu_char[] = 
{
    {"формирование символов\t\t\t",    1},
    {"длительность точки (с)\t\t\t",  400},
    {"длительность тире (с)\t\t\t",  1200},
    {"Пауза между \".\" & \"-\" одного знака\t",   400},
    {"Пауза между знаками в слове\t\t",     1200}
};
 
char* RusLocal(char* s)
{
	static char buf[500];
	CharToOem(s, buf);
	return buf;
}

int nItems  = sizeof(menu_char)/sizeof(menu_char[0]);
int iSelected;




bool ShowMenu(menu_code* MenuTable, HANDLE hOUT, int iit, bool iTrue);

int main()
{
    HANDLE hOUT = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD cPOS  = {0};
            bool iTrue;
int iit=1;
      
    while(true)
    {

        FillConsoleOutputCharacter(hOUT, ' ', 40*80, cPOS, NULL);
        SetConsoleCursorPosition(hOUT, cPOS);
        SetConsoleTextAttribute(hOUT, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
                
        if(GetAsyncKeyState(VK_UP))
        {
            keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
            if(0 < iit - 1)
                iit = iit - 1;
            else
                iit = nItems;
        }
        
        if(GetAsyncKeyState(VK_DOWN))
        {
            keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
            if(iit < nItems)
                iit = iit + 1;
            else
                iit = 1;
        }
        
        if(GetAsyncKeyState(VK_RETURN))
        {
//           keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
           iTrue=true;                                  
        }
        
        ShowMenu(menu_char, hOUT, iit, iTrue);
    }
    return 0;
}

void ShowMenu(menu_code* MenuTable, HANDLE hOUT, int iit, bool iTrue) // Рисуем меню
{
        int iTrue2=0;
        printf("\n\t%s\n\n", RusLocal("М Е Н Ю"));

        for(int iItem = 1; iItem <= nItems; iItem++)
        {
            if(iItem == iit)
                SetConsoleTextAttribute(hOUT, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
            else
                SetConsoleTextAttribute(hOUT, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);

            printf("%s- %d\n", RusLocal(MenuTable[iItem-1].nameMenu), MenuTable[iItem-1].data);

            if(iItem == iit)
                iTrue2 = iItem;
        }
        
        if(iTrue==true)
        {
            SetConsoleTextAttribute(hOUT, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
            iTrue = false;
            int d;                      
            printf("\n%s: ", RusLocal("Ввод данных"));                                   
            scanf("%d", &d);

            MenuTable[iTrue2-1].data = d;
        }
        
        iSelected = getch() - '0';
}
Проблема состоит в том что когда я стрелочками выбрал нужный пункт меню, нажал клавишу ENTER -> изменяю нужное мне значение -> нажал клавишу ENTER,
строка ввода данных не пропадает.
как сделать чтобы строка после ввода значения исчезала

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