Как в Си++ обрабатывать события нажатия на стрелку?

Тема в разделе "Общие вопросы по С и С++", создана пользователем Nek, 2 ноя 2009.

Статус темы:
Закрыта.
  1. Nek

    Nek Гость

    Всем привет. Вот у меня тут проблема небольшая возникла. Сейчас делаю курсовую по Си++ и кое чего не знаю. Вот собственно то, чего я не знаю:
    Мне надо, чтобы у меня в программе при нажатии стрелки выполнялось какое либо действие. Ну типа там я нажимаю стрелку вниз, и, к примеру, каретка сползает на 2 строки вниз(как два раза нажать Enter :rolleyes: ). Так вот не знаю как это реализовать. Буду очень благодарен, если кто либо даст мне ответ на этот вопрос. Желательно, чтобы кто-нибудь дал пример.
    И вот еще что, программу эту я делаю в Borland 3.11 for DOS, т.к. этого требует преподаватель, т.е. в консольном виде.
    Еще раз спасибо за внимание :blink:
     
  2. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.470
    Симпатии:
    27
    Ну так все просто. В вашей программе постоянно ожидаете ввода символа, пототм проверяете if getch=ASCII код стрелки{делаете то что нужно} Код стрелки - 28(Hex). Больше подсказывать нечего=)
     
  3. Nek

    Nek Гость

    vital
    Спасибо, конечно. Но я не уверен что этот ответ правильный. Я взял функцию getch() и немного поэкспериментировал. Вот моя программа

    #include<iostream.h>
    #include<conio.h>
    #include<stdio.h>
    #include<stdlib.h>
    main()
    {
    clrscr();
    int flag=1, r;
    while(flag)
    {
    r=getch();
    cout << "\n cod simvola = " <<r;
    if(r==0x1b)
    flag=0;

    }
    return 0;

    }


    Эта программа выводит код вводимого символа, а при нажатие 'ESK' заканчивает программу. Так вот и возникает проблема, что при вводе стрелки получается код 72, 75, 78 или 80 и еще ноль строкой выше. А эти символы как известно большие буквы английского алфавита. Так что я прошу вернуться к моему вопросу и дать какой нибудь другой ответ.

    С уважением, Артем.
     
  4. Гость

    Функциональные клавиши при нажатии дают два кода, первый ноль, второй - код. Ноль возвращают только спецклавиши.
    Итого обработка
    r=getch();
    if(r==0)
    {
    r=getch();
    [и здесь ваша обработка нажатия]
    }
     
  5. Nek

    Nek Гость

    АлександрРостовский
    Спасибо, конечно, но я уже решил эту проблему :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей