Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Skywalker(cyb)
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 5
#1

Коды нажатия клавишь. - C++

16.01.2009, 16:18. Просмотров 991. Ответов 6
Метки нет (Все метки)

Код
#include'stdio.h'
#include'conio.h'
main()
{ 
  int n;
  if(!(n=getch()))
  {
     n=getch();
  }
  printf('%d
',n);
}
Почему коды стрелок которые рассположены на клаве ниже delete, end получаются одинаковыми?
Подскажите какой всё-таки функцией отслеживать коды нажатия клавишь ?
я делаю для дос простенькое меню. мой компилятор vs6.0 и ещё есть досовский старый 3.0
Хелп плиз
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
2511 / 1733 / 229
Регистрация: 08.06.2007
Сообщений: 6,807
Записей в блоге: 4
16.01.2009, 21:38     Коды нажатия клавишь. #2
На досовском компиляторе для этих целей нам приходилось пользоваться ассемблером:
Код
#include'stdio.h'
main(){

  char n1, n2;
_asm {
  mov AH,10h
  int 21h
  mov n1,al
  mov n2,ah
}
 printf('%02X %02X
',n1, n2);
}
К сожалению у меня нет сейчас возможности проверить этот код. Можете посмотреть также ссылку
http://www.c-for-dummies.com/lessons/bonus/07/
palva
2511 / 1733 / 229
Регистрация: 08.06.2007
Сообщений: 6,807
Записей в блоге: 4
16.01.2009, 21:51     Коды нажатия клавишь. #3
Кажется я всё-таки неправ. Для того чтобы правильно воспринимались дополнительные клавиши на серой (цифровой) клавиатуре нужно использовать ah=11h, вторая ошибка, что обращаться надо не к DOS-прерыванию (21h) а к BIOS (16h). Таким образом, правильно будет:
Код
mov ah,11h
asm int 16h
Некоторые компиляторы также требуют, чтобы применялось не слово asm, а _asm. Поэкспериментируйте. Давно это было, уже запамятовал.
Skywalker(cyb)
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 5
17.01.2009, 14:06  [ТС]     Коды нажатия клавишь. #4
Спасибо за помощь.
ManiaK
Сообщений: n/a
20.01.2009, 16:04     Коды нажатия клавишь. #5
В vc6.0 всё таки _asm. Кстати, если написать строки асм кода:
Код
xor ax,ax
int 16h
то комп зависьнет. Зависание происходит потому, что эти строки заставляют комп ждать ввода символа(или нажатия клавиши) то в BIOS'е, то в DOS'е. А винда не ДОС и темболее не BIOS. Вот и висит прога. Естественно всё это работает только в Windows.
Это так, на заметку. Прикиньте сколько я допытывался, что происходит!
Skywalker(cyb)
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 5
21.01.2009, 19:34  [ТС]     Коды нажатия клавишь. #6
Откуда бы мне скачатьт файл bios.h ????
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2009, 20:24     Коды нажатия клавишь.
Еще ссылки по теме:

Коды Assembler в C/C++ C++
C++ короткие коды с ********
C++ Циклические коды
C++ Коды C++
C++ Коды Хэмминга С++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
palva
2511 / 1733 / 229
Регистрация: 08.06.2007
Сообщений: 6,807
Записей в блоге: 4
21.01.2009, 20:24     Коды нажатия клавишь. #7
Послал, от Borland C/C++ 3.1. Только что вы с ним будете делать?
Yandex
Объявления
21.01.2009, 20:24     Коды нажатия клавишь.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru