Форум: Форум C++Разное
Новые темы: 00
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создание меню с возможностью перемещения с помощью стрелок и кнопки ENTER
 
 автор: Kostia89   (03.04.2007 в 15:40)   письмо автору
 
 

У меня следующий вопрос:
Как на C++ написать функцию, которая выводит меню, перемещаться по которому можно с помощью стрелок и нажатия на кливишу ENTER. Скажите, пожалуйста, хотя бы приблизительно как это сделать?

  Ответить  
 
 автор: alex19921992   (03.04.2007 в 18:39)   письмо автору
 
   для: Kostia89   (03.04.2007 в 15:40)
 

Вам в консольном приложении или как?

  Ответить  
 
 автор: Kostia89   (03.04.2007 в 19:26)   письмо автору
 
   для: alex19921992   (03.04.2007 в 18:39)
 

Да, в консольном приложении.

  Ответить  
 
 автор: cheops   (04.04.2007 в 12:26)   письмо автору
 
   для: Kostia89   (03.04.2007 в 15:40)
 

Возможно вас заинтересует тема по ссылке http://www.softtime.ru/cpp/read.php?id_forum=1&id_theme=201.

  Ответить  
 
 автор: Kostia89   (04.04.2007 в 12:40)   письмо автору
 
   для: cheops   (04.04.2007 в 12:26)
 

Это не совсем то... Я в принципе понял уже, как это делать. Но возникла следующая проблема:
Я хочу достать код нажатой кнопки (например, стрелки вниз) с помощбю getch().

c=getch();
if (c==80) cout<<"Rabotaet";

(код кнопки - 80)
Но почему-то не получается...

  Ответить  
 
 автор: rty   (04.04.2007 в 13:05)   письмо автору
 
   для: Kostia89   (04.04.2007 в 12:40)
 


c=getch();
if (c==0) 
{
  c=getch();
  if( c==80 )
  cout<<"Rabotaet";
}

  Ответить  
 
 автор: Kostia89   (04.04.2007 в 13:08)   письмо автору
 
   для: rty   (04.04.2007 в 13:05)
 

Заработало! Но я не понял, почему? Объясните плиз)

  Ответить  
 
 автор: rty   (04.04.2007 в 13:09)   письмо автору
 
   для: Kostia89   (04.04.2007 в 13:08)
 

этот код работает или нет?

  Ответить  
 
 автор: Kostia89   (04.04.2007 в 13:12)   письмо автору
 
   для: rty   (04.04.2007 в 13:09)
 

Да... но почему надо дважды делать getch() ?

  Ответить  
 
 автор: rty   (04.04.2007 в 13:18)   письмо автору
 
   для: Kostia89   (04.04.2007 в 13:12)
 

первый раз в getch посылается 0 а 80 зависает и тогда надо зделать второй getch

  Ответить  
 
 автор: Kostia89   (04.04.2007 в 13:20)   письмо автору
 
   для: rty   (04.04.2007 в 13:18)
 

Ясно. Но все же, а почему "зависает " 80? Это просто особенность этой функции?

  Ответить  
 
 автор: rty   (04.04.2007 в 13:22)   письмо автору
 
   для: Kostia89   (04.04.2007 в 13:20)
 

точно не знаю, наверное это особенность этой клавиши

  Ответить  
 
 автор: Kostia89   (04.04.2007 в 13:24)   письмо автору
 
   для: rty   (04.04.2007 в 13:22)
 

Вероятно, т.к. мой код работал со всеми клавишами, кроме стрелок)...Спасибо за помощь

  Ответить  
 
 автор: alex19921992   (04.04.2007 в 13:58)   письмо автору
 
   для: Kostia89   (04.04.2007 в 13:24)
 

Давайте я объясню, почему это так. Дело в том, что многие кнопки имеют "двойные коды", то есть при нажатии посылают в буфер клавиатуры 2 символа - 0 и еще какой-то. Этими клавишами как раз являются стрелки. Функция гетч() читает из буфера 1 символ. Если прочитал ноль - то это признак нажатия такой вот "двойной" кнопки.
Хотя у меня все и так работает - для стрелок используйте латинские заглавные: Н Р К М и все будет работатьс одним гетчем:

ch=getch();
if(ch=='H'){/* стрелка вверх*/}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования