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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
#1

Отмена ввода по нажатию ESC - C++

02.06.2011, 14:45. Просмотров 727. Ответов 5
Метки нет (Все метки)

Как отменить все введенное и выйти если пользователь нажал ESC? (желательно с использованием консольного буфера ввода)

Добавлено через 3 минуты
или это переделать. Но у меня чтот не получилось
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//----Функция разрешает ввод только цифр-------------------------------------
void OnlyDigit(int &a){
    const int count=10;
    INPUT_RECORD IR[count];
    DWORD read;
    while(PeekConsoleInputA(hstd,IR,count,&read)) {
        for(i=0; i<read; i++)
            if(IR[i].EventType==KEY_EVENT && isdigit(IR[i].Event.KeyEvent.wVirtualKeyCode)) {
                cin>>a;
                return;
            }
        FlushConsoleInputBuffer(hstd);
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2011, 14:45     Отмена ввода по нажатию ESC
Посмотрите здесь:

Выход по нажатию ESC - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; float sum(); float razn(); float del(); float proizv(); float...

Выход из программы по нажатию Esc - C++
подскажите как сделать чтобы по нажатию ESC выводился результат.затупил чутка int main(){ setlocale(LC_ALL, &quot;RUS&quot;); toll_Both...

Esc как символ конца ввода - C++
Доброго времени суток. Есть такой вопрос. Как мне закончить ввод при нажатии esc. Например, если пользователь вводит некий текст (через cin...

Выход по ESC - C++
Приветствую вас уважаемые &quot;чатлане&quot;! .Пишет вам &quot;пацак&quot;. Я начал с Borland C++ 3.1. Наверное все очень просто на самом деле, но как и у...

Esc-последовательности - C++
Добрый день!Столкнулся с такой проблемой...Не знаю как в консоли с помощью управляющих последовательностей перевести каретку на строку...

Игнорирование Enter/Esc - C++
Здравствуйте, форумчане. У меня встаёт вопрос! :) Вообщем есть программа, нулевая. #include &quot;stdafx.h&quot; int _tmain(int...

Прерывание программы по ESC C++ - C++
доброй ночи Добрался до такой вот темы Пытаюсь реализовать перехват нажатия клавиши ESC и SPACE в консольном режиме Но программа не...

На ESC не реагирует прога - C++
Задача из Лафоре, 6 глава Но это не важно Вот код проги: #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; const char...

Обработка клавиши Esc - C++
Не могу найти как обработать клавишу Esc. Цикл повторяется пока не будет нажата эта клавиша, после нажатия выводятся данные о поле...

Выход из программы по нажатии esc - C++
Ребят, как реализовать досрочный выход из программы на любом этапе ее выполнения, желательно по нажатии клавиши ESC?

Закрытие программы клавишей Esc - C++
Здравствуйте! Хотел бы узнать какой код нужно написать чтобы закрыть программу нажатием клавиши ESC (Видел другие темы(не только на...

виход из проги клавишей Esc - C++
Как на С++ зделать чтоб из программы виходило при нажатии Esc,что прописывать ?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,223
Записей в блоге: 1
Завершенные тесты: 1
02.06.2011, 15:43     Отмена ввода по нажатию ESC #2
Это мой код))

Как вариант - запустить такую ф-цию в отдельном потоке
C
1
2
3
4
5
6
7
8
9
void WaitEsc(){
        const int count=10;
        INPUT_RECORD IR[count];
        DWORD read;
        while(PeekConsoleInputA(hstd,IR,count,&read)) 
                for(i=0; i<read; i++)
                        if(IR[i].EventType==KEY_EVENT && IR[i].Event.KeyEvent.wVirtualKeyCode==VK_ESCAPE)
                                exit(0);
}
Добавлено через 11 минут
Вот полный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Windows.h>
void WaitEsc();
int main() {
    CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)WaitEsc, NULL, 0, NULL);
    /*здесь твой код*/
           Sleep(1000000);//просто для примера
    return 0;
}
void WaitEsc(){
    HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
        const int count=10;
        INPUT_RECORD IR[count];
        DWORD read;
        while(PeekConsoleInputA(hstd,IR,count,&read)) 
                for(int i=0; i<read; i++)
                        if(IR[i].EventType==KEY_EVENT && IR[i].Event.KeyEvent.wVirtualKeyCode==VK_ESCAPE)
            exit(0);
}
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
02.06.2011, 23:16  [ТС]     Отмена ввода по нажатию ESC #3
Да. по ESC выходит. Но я не пойму как сделать чтоб я мог чтот вводить в переменную и если нажму ESC все обнулилось и вышло
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,223
Записей в блоге: 1
Завершенные тесты: 1
03.06.2011, 09:56     Отмена ввода по нажатию ESC #4
Цитата Сообщение от PodOnoK Посмотреть сообщение
как сделать чтоб я мог чтот вводить в переменную и если нажму ESC все обнулилось и вышло
Не совсем понятно. Зачем что-то обнулять, если программа завершается?
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
04.06.2011, 11:37  [ТС]     Отмена ввода по нажатию ESC #5
Не ты не понял. Вот я запускаю какой-то пункт меню. Выводиться сообщение, например, "Введите номер студента для поиска". И программа переходит в ожидание ввода номер...
Я хочю сделать так чтоб пользователь мог отменить ввод нажатием ESC и выйти в главное меню. А если потвердит ввод то пойдет поиск. В общем чтот вроде этого
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,223
Записей в блоге: 1
Завершенные тесты: 1
04.06.2011, 11:51     Отмена ввода по нажатию ESC #6
Цитата Сообщение от PodOnoK Посмотреть сообщение
Вот я запускаю какой-то пункт меню. Выводиться сообщение, например, "Введите номер студента для поиска". И программа переходит в ожидание ввода номер...
Я хочю сделать так чтоб пользователь мог отменить ввод нажатием ESC и выйти в главное меню. А если потвердит ввод то пойдет поиск. В общем чтот вроде этого
А теперь сравни это с тем, что ты написал в первом посте)
Теперь понятно, если время будет - напишу по-позже.
Yandex
Объявления
04.06.2011, 11:51     Отмена ввода по нажатию ESC
Ответ Создать тему
Опции темы

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