Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема c getch() 
V
    Опции темы
Sadness
Дата 2.12.2008, 01:23 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.5.2008

Репутация: нет
Всего: нет



Всем привет smile

Делаю не сложное меню в консольном приложении , и столкнулся со следующей проблемой:

Код

int m_mov = getch();
switch(m_mov)
{
    case 38:
           // ...
         break;
   case 40:
          // ...
         break;
}


программа никак не реагирует на нажатие стрелок (и много еще на какие smile), хотя с цифровыми кнопками работает нормально.
Что я делаю не так подскажите пожалуйста smile
PM MAIL   Вверх
ne_tru_e
Дата 2.12.2008, 01:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Приношу жертвы MS
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.1.2008

Репутация: нет
Всего: 4



А ты после строки с getch() напиши printf("%d",m_mov);
То есть проверь что оно получает при нажатии на стрелки.
PM WWW Jabber   Вверх
Sadness
Дата 2.12.2008, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.5.2008

Репутация: нет
Всего: нет



Странно smile
получаю 224, причем для всех 4-х стрелок.
PM MAIL   Вверх
vinter
Дата 2.12.2008, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Sadness, если я ничего не путаю,стрелки это управляющие клавиши, у них надо обрабатывать второй байт. Это делается через kbhit+getch. Я выкладывал исходник работы клавиатуры в ДОСе, поищи, по моему нику в темах. Если не найдешь я вечером выложу(если не забуду smile


--------------------
Мой блог
PM MAIL WWW   Вверх
Sadness
Дата 2.12.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.5.2008

Репутация: нет
Всего: нет



vinter:
Нашел эту тему, спасибо smile

Тема тут, может еще кому то надо будет

Это сообщение отредактировал(а) Sadness - 2.12.2008, 16:03
PM MAIL   Вверх
ne_tru_e
Дата 2.12.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Приношу жертвы MS
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.1.2008

Репутация: нет
Всего: 4



Я додумался и сам, но считал что было и другое решение. А зря.
Далеко ходить не нужно, в принципе там то же самое.

Код

int m_mov = getch();
if( m_mov==224)
  switch( getch() )
  {
      case 72:// вверх
           //...
           break;
      case 75:// влево
           //...
           break;
      case 77:// вправо
           //...
           break;
      case 80:// вниз
           //...
           break;
  }


То есть мы просто второй раз вызываем getch().

Это сообщение отредактировал(а) ne_tru_e - 2.12.2008, 16:40
PM WWW Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0892 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.