Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2009, 20:06   #1
nweb2008
Новичок
Джуниор
 
Регистрация: 06.07.2009
Сообщений: 5
По умолчанию Проблема с getch()

Доброго дня суток.
Я хочу в своей программе на с++ сделать меню, пункты которого бы переключались стрелочками.
я использую функцию getch(). Она возвращает int. Работает отлично, только не в моем случае, т.е. не для нажатия стрелочек. В этих случаях принимает значения 0K, 0H и т.д. что никак не является int. и естественно проверить нажатие стрелки у меня не получается.
Помогите пожалуйста! Может есть какая то другая функция, которая более корректно обрабатывает нажатие стрелок!
Заранее спасибо =))))
nweb2008 вне форума Ответить с цитированием
Старый 06.07.2009, 20:12   #2
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Выкладывай исходник, посмотрим что у тебя не выходит...
vasek123 вне форума Ответить с цитированием
Старый 06.07.2009, 20:24   #3
nweb2008
Новичок
Джуниор
 
Регистрация: 06.07.2009
Сообщений: 5
По умолчанию

да тут исходник нового ничего не скажет. ну вот кусочек кода
Код:
int a = getch();
cout<<a;
При нажатии любой клавиши он выведет соответствующее число.
Но при нажатии кнопки "вниз" выводит - 0P , вверх - 0H....... и естественно выполнить проверку, сравнить его с числовым кодом клавиши нельзя
nweb2008 вне форума Ответить с цитированием
Старый 06.07.2009, 20:28   #4
nweb2008
Новичок
Джуниор
 
Регистрация: 06.07.2009
Сообщений: 5
По умолчанию

мне кто то говорил, что есть какая то похожая ф-ция, но она возвращает byte. но я так и не понял, что они имели ввиду(((
nweb2008 вне форума Ответить с цитированием
Старый 06.07.2009, 20:54   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от nweb2008
При нажатии любой клавиши он выведет соответствующее число.
Но при нажатии кнопки "вниз" выводит - 0P , вверх - 0H......
У меня такого не показывает. Просто для стрелок нужно еще проверку делать дополнительную.
Пример:
Код:
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
int c;
do
 {
  c = getch();
  if(c==224) c = getch(); // нажата стрелка
  cout<<c<<endl;
 } while(c!=27);

return 0;
}
upd ps: понял, почему у вас там всякие oh выводит )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 06.07.2009 в 21:17.
Sazary вне форума Ответить с цитированием
Старый 06.07.2009, 21:22   #6
nweb2008
Новичок
Джуниор
 
Регистрация: 06.07.2009
Сообщений: 5
По умолчанию

ну это уже что то =))) но все равно остаются проблемы. на нажатие стрелок он выводит 080, 072.
если поможет - я пишу на Borland c++ for DOS
nweb2008 вне форума Ответить с цитированием
Старый 06.07.2009, 21:42   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот так измените:
Код:
  if(c==0) c = getch(); // нажата стрелка
При нажатии стрелки код первого символа - 0.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 06.07.2009, 22:21   #8
nweb2008
Новичок
Джуниор
 
Регистрация: 06.07.2009
Сообщений: 5
По умолчанию

ура)))) кажись работает =))) спасибо!
nweb2008 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог getch(); в C# Spice Общие вопросы .NET 5 17.05.2015 17:17
Подскажите кто-нибудь в чем отличие между system("pause"); и getch(); какую лучше использовать? Paul_AG Общие вопросы C/C++ 7 24.03.2009 19:32
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37