|
|
|
| У меня следующий вопрос:
Как на C++ написать функцию, которая выводит меню, перемещаться по которому можно с помощью стрелок и нажатия на кливишу ENTER. Скажите, пожалуйста, хотя бы приблизительно как это сделать? | |
|
|
|
|
|
|
|
для: Kostia89
(03.04.2007 в 15:40)
| | Вам в консольном приложении или как? | |
|
|
|
|
|
|
|
для: alex19921992
(03.04.2007 в 18:39)
| | Да, в консольном приложении. | |
|
|
|
|
|
|
|
|
для: cheops
(04.04.2007 в 12:26)
| | Это не совсем то... Я в принципе понял уже, как это делать. Но возникла следующая проблема:
Я хочу достать код нажатой кнопки (например, стрелки вниз) с помощбю getch().
c=getch();
if (c==80) cout<<"Rabotaet";
|
(код кнопки - 80)
Но почему-то не получается... | |
|
|
|
|
|
|
|
для: Kostia89
(04.04.2007 в 12:40)
| |
c=getch();
if (c==0)
{
c=getch();
if( c==80 )
cout<<"Rabotaet";
}
|
| |
|
|
|
|
|
|
|
для: rty
(04.04.2007 в 13:05)
| | Заработало! Но я не понял, почему? Объясните плиз) | |
|
|
|
|
|
|
|
для: Kostia89
(04.04.2007 в 13:08)
| | этот код работает или нет? | |
|
|
|
|
|
|
|
для: rty
(04.04.2007 в 13:09)
| | Да... но почему надо дважды делать getch() ? | |
|
|
|
|
|
|
|
для: Kostia89
(04.04.2007 в 13:12)
| | первый раз в getch посылается 0 а 80 зависает и тогда надо зделать второй getch | |
|
|
|
|
|
|
|
для: rty
(04.04.2007 в 13:18)
| | Ясно. Но все же, а почему "зависает " 80? Это просто особенность этой функции? | |
|
|
|
|
|
|
|
для: Kostia89
(04.04.2007 в 13:20)
| | точно не знаю, наверное это особенность этой клавиши | |
|
|
|
|
|
|
|
для: rty
(04.04.2007 в 13:22)
| | Вероятно, т.к. мой код работал со всеми клавишами, кроме стрелок)...Спасибо за помощь | |
|
|
|
|
|
|
|
для: Kostia89
(04.04.2007 в 13:24)
| | Давайте я объясню, почему это так. Дело в том, что многие кнопки имеют "двойные коды", то есть при нажатии посылают в буфер клавиатуры 2 символа - 0 и еще какой-то. Этими клавишами как раз являются стрелки. Функция гетч() читает из буфера 1 символ. Если прочитал ноль - то это признак нажатия такой вот "двойной" кнопки.
Хотя у меня все и так работает - для стрелок используйте латинские заглавные: Н Р К М и все будет работатьс одним гетчем:
ch=getch();
if(ch=='H'){/* стрелка вверх*/}
|
| |
|
|
|