printГрафическая библиотека

printКлавиатура и мышь

int getch(int special=0);
Считать код нажатой клавиши на клавиатуре. Если клавиша не нажата, то ожидать нажатия. Есть аналогичная функция в <coniow.h>, но здесь другая несовместимая реализация. Для специальных клавиш функция сначала возвращает число 0, затем скан-код. Для обычных клавиш - ASCII-код.
Специальными клавишами являются KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, KEY_NUM_LOCK, KEY_SCROLL_LOCK, KEY_HOME, KEY_UP, KEY_PGUP, KEY_LEFT, KEY_CENTER (кнопка 5 при выключенном NumLock), KEY_RIGHT, KEY_END, KEY_DOWN, KEY_PGDN, KEY_INSERT, KEY_DELETE, KEY_CTRL, KEY_SHIFT, KEY_ALT.
Обычными клавишами - остальные, включая KEY_ESC, KEY_TAB, KEY_BACKSPACE, KEY_ENTER.
При указании аргумента 1, для специальных клавиш возвращается одно значение - KEY_SPECIAL+код клавиши.
При указании аргумента 2 также возвращаются нажатия кнопок на мыши - MOUSE_LCLICK, MOUSE_LDBLCLICK, MOUSE_RCLICK, MOUSE_RDBLCLICK, MOUSE_WHEELUP, MOUSE_WHEELDOWN.
При нажатии X для закрытия окна открытого в режиме closeall=false возвращается код WINDOW_CLOSE.
int kbhit(int mousehit=0);
Проверить, была ли нажата клавиша на клавиатуре. Если клавиша не нажата, то вернуть 0, иначе ненулевое значение. Считать код нажатой клавиши можно с помощью getch. Есть аналогичная функция в <coniow.h>, но здесь другая несовместимая реализация.
При указании аргумента не равного 0, проверяются клики мыши.
int controlkeystate(void);
Узнать текущее состояние управляющих клавиш в виде набора битов (Ctrl, Alt, Shift)
int keystate(int key);
Узнать текущее состояние клавиши key. Для специальных клавиш нужно передать KEY_SPECIAL+код клавиши, для клавиш с символами - символ без нажатия Shift. Возвращается 0, если клавиша не нажималась, 1, если нажата в данный момент, 2, если только что была отпущена (при повторном обращении вернет 0). Так как нажатые клавиши попадают в буфер клавиатуры, для их удаления выполнять цикл while(kbhit()) getch(1);
int mousex(void);
Получить координату x указателя мыши.
int mousey(void);
Получить координату y указателя мыши.
int mousebuttons(void);
Получить состояние кнопок мыши. Если нажата левая кнопка, то возвращается 1, правая - 2, обе - 3.
Пример использования:
int waitclick(int *x1, int *y1, int *x2, int *y2) {
  int b;
  while((b=mousebuttons())==0) { // ждем нажатия кнопки
     if(kbhit()) return 0; // если нажата клавиша - выйти
  }
  *x1=mousex();
  *y1=mousey();
  while(mousebuttons()==0); // ждем отпускания кнопки
  *x2=mousex();
  *y2=mousey();
  return b;
}
// вызов
int b,x1,y1,x2,y2;
b=waitclick(&x1,&y1,&x2,&y2);
if(b==1) { 
  нажата левая кнопка, мышь двигалась из (x1,y1) в (x2,y2)
}
void registermousehandler(int kind, void (*func)( int, int ));
Установить обработчик для событий мыши. Первый аргумент kind может принимать значения WM_MOUSEMOVE (перемещение мыши), WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK (левая кнопка), WM_RBUTTONDOWN, WM_RBUTTONUP, WM_RBUTTONDBLCLK (правая кнопка), WM_MBUTTONDOWN, WM_MBUTTONUP, WM_MBUTTONDBLCLK (средняя кнопка), WM_MOUSEWHEEL (вращение колесика), WM_XBUTTONDOWN, WM_XBUTTONUP, WM_XBUTTONDBLCLK (боковые кнопки), WM_MOUSEHWHEEL (вращение бокового колесика). В качестве второго аргумента указывается функция обработки события, этой функции передаются координаты x,y курсора мышки в момент события (для вращения колесика в качестве первого аргумента - размер сдвига). Для отмены обработки вторым аргументом указать NULL. Вызывать функцию registermousehandler нужно после создания окна. Пример использования:
void wheelhandler(int x, int y)
{
  if(x<0) 
  { // вниз
  }
  else
  { // вверх
  }
}
int main() {
  initwindow(800,600);
  registermousehandler(WM_MOUSEWHEEL,wheelhandler);
  ...
}
void delay(unsigned msec);
Задержка на указанное число миллисекунд.
loading