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

Обясните про функцию bioskey() - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Win32 API Работа с процессами http://www.cyberforum.ru/cpp-beginners/thread37088.html
Господа, здравствуйте! Я новичок в программировании, помогите пожалуйста в программе, не знаю как сделать. Мне нужно реализовать следующий алгоритм: программа запускает процесс, затем выполняет в цикле некие действия, пока процесс не завершится т.е. нужно использовать цикл do while. Подскажите пожалуйста, что нужно использовать в условии while, какую функцию?
C++ Исправьте пожалуйста ошибки Есть задача: создать массив данных о студентах группы. Записать имя, фамилию, год рождения каждого студента, оценки по пяти экзаменах. В списке студентов группы вычислить количество студентов с именами: Наталья, Владимир, Роман #include <stdio.h> #include <iostream.h> #include <conio.h> struct student // Шаблон структуры { char name; // имя char fam; // фамилия... http://www.cyberforum.ru/cpp-beginners/thread37077.html
Действия со строками в файлах C++
В проге надо: считывать строки с файла, копируя в другой файл не пустые и строки без директив препроцесора (тоесть не те в которых 1й символ решотка) будет ли ета прога работать правильно? #include<stdio.h> #include<conio.h> #define LEN 81 #define NROWS 1 int main() { FILE *f; FILE *o; o=fopen("newtext.txt", "w");
C++ срочно требуется помощь... надо перевести из pascal в c++. каким образом ето сделать не понимаю...
исходник паскаля Program Kurs; uses crt,graph; type Dim=array of byte; DimPtr=^Dim; var Wx,Wy,col,x1,i :integer; DirPos,ImageFile,c :string; driv,mode,x,y :integer; seektiff :longint;
C++ Перевод чисел из римских в арабские и наоборот http://www.cyberforum.ru/cpp-beginners/thread37055.html
#include <iostream.h> #include <fstream.h> #include <stdlib.h> #include <windows.h> #include <conio.h> int AtoR(int);//прототипы функций int RtoA(char,char); void main()
C++ Нужна помощ с функциями в Borland C. Из-за праздников пропали пары по прогрмаированию, и одну из тем нам задали на самостоятельное изучение, тема про функции, и соответсвенно задали задание: Написать программу, содержащую функцию, которая возвращает минимальный элемент переданного ей массива, если все элементы массива положительны, и максимальный элемент, если есть хотя бы один отрицательный. Я приблизительно знаю как её писать,... подробнее

Показать сообщение отдельно
Даемоник
42 / 42 / 3
Регистрация: 22.05.2009
Сообщений: 97
28.05.2009, 22:42     Обясните про функцию bioskey()
Функция Интерфейс с клавиатурой при помощи функций BIOS.

Синтаксис #include<bios.h>
int bioskey(int cmd);

Файл, содержащий bios.h
прототип

Описание bioskey посредством прерывания BIOS 0x16 выполняет
различные операции c клавиатурой. Параметр cmd
определяет операцию.

Возвращаемое Значение, возвращаемое функцией bioskey, зависит от
значение выполняемой операции, которая определяется
аргументом cmd:

---------------------------------------------------
cmd Операция
---------------------------------------------------
0 Если младшие 8 бит не нулевые, bioskey
возвращает код ASCII следующей нажатой
клавиши, ожидающей в очереди. Если младшие 8
битов равны 0, то старшие 8 битов содержат
расширенные коды клавиатуры, описание
которых вы можете найти в документе
"Техническое справочное руководство по IBM
PC".

1 Производится проверка, имело ли место
нажатие клавиши. Если при проверке
возвращается значение 0, это означает, что
клавиша не была нажата. В противном случае
возвращается значение очередной нажатой
клавиши. Сам же код очередной нажатой
клавиши сохраняется и будет возвращен при
следующем вызове функции bioskey при
значении параметра cmd, равном нулю.

2 Запрашивает текущий статус клавиш типа
SHIFT. Значение получается при логическом
сложении следующих кодов (операции "ИЛИ")

Бит 7 0x80 INSERT нажат
Бит 6 0x40 CAPS нажат
Бит 5 0x20 NUM LOCK нажат
Бит 4 0x10 SCROLL LOCK нажат
Бит 3 0x08 ALT нажат
Бит 2 0x04 CTRL нажат
Бит 1 0x02 LEFT SHIFT нажат
Бит 0 0x01 RIGHT SHIFT нажат

Переносимость bioskey поддерживается только на компьютерах IBM PC
или совместимых с ними.

Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <bios.h>
#include <ctype.h>
 
#define RIGHT 0x0001
#define LEFT  0x0002
#define CTRL  0x0004
#define ALT   0x0008
 
int main(void)
{
  int key, modifiers;
 
  /* Функция 1 возвращает 0, пока не будет
  нажата клавиша. Ожидание  ввода. */;                                                                        
  while (bioskey(1) == 0);
 
  /* Теперь используем функцию 0, чтобы получить
  значение клавиши  */
  key = bioskey(0);
 
  /* Используем функцию 2, чтобы определить,
  используются ли клавиши типа SHIFT */.
  modifiers = bioskey(2);
  if (modifiers) {
     printf("[");
     if (modifiers & RIGHT) printf("RIGHT ");
     if (modifiers & LEFT ) printf("LEFT ");
     if (modifiers & CTRL ) printf("CTRL ");
     if (modifiers & ALT  ) printf("ALT ");
     printf("] ");
}
/* вывести символ нажатой клавишу */
if (isalnum(key & 0xFF))
   printf("'%c'\n",key);
else
   printf("%#02x\n",key);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru