• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Nek
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

Nek

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

vital

Ну так все просто. В вашей программе постоянно ожидаете ввода символа, пототм проверяете if getch=ASCII код стрелки{делаете то что нужно} Код стрелки - 28(Hex). Больше подсказывать нечего=)
 
N

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 и еще ноль строкой выше. А эти символы как известно большие буквы английского алфавита. Так что я прошу вернуться к моему вопросу и дать какой нибудь другой ответ.

С уважением, Артем.
 
G

Guest

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

Nek

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!