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

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

Восстановить пароль Регистрация
 
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
02.06.2011, 14:45     Отмена ввода по нажатию ESC #1
Как отменить все введенное и выйти если пользователь нажал 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++
C++ Esc-последовательности
Игнорирование Enter/Esc C++
C++ Прерывание программы по ESC C++
Выход по нажатию ESC C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 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
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 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
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
04.06.2011, 11:51     Отмена ввода по нажатию ESC #6
Цитата Сообщение от PodOnoK Посмотреть сообщение
Вот я запускаю какой-то пункт меню. Выводиться сообщение, например, "Введите номер студента для поиска". И программа переходит в ожидание ввода номер...
Я хочю сделать так чтоб пользователь мог отменить ввод нажатием ESC и выйти в главное меню. А если потвердит ввод то пойдет поиск. В общем чтот вроде этого
А теперь сравни это с тем, что ты написал в первом посте)
Теперь понятно, если время будет - напишу по-позже.
Yandex
Объявления
04.06.2011, 11:51     Отмена ввода по нажатию ESC
Ответ Создать тему
Опции темы

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