Шаг 6 - Учим реагировать на клавиатуру окно OpenGL

Создание проекта

Только изменение кода. Добавляем описание функций реакции:

#include "afxwin.h"
#include "GL/gl.h"
#include "GL/glu.h"
#include "GL/glaux.h"

void myinit(void);
void CALLBACK display(void);
void CALLBACK ProcUp(void);
void CALLBACK ProcDown(void);
void CALLBACK RrocLeft(void);
void CALLBACK ProcRight(void);

Связываем функции с нажатием клавиш:

int main(int argc, char** argv)
{
	auxInitDisplayMode (AUX_SINGLE | AUX_RGB );
	auxInitPosition (0, 0, 500, 500);
	auxInitWindow ("1-6");
	myinit ();
	auxKeyFunc(AUX_UP, ProcUp);
	auxKeyFunc(AUX_DOWN, ProcDown);
	auxKeyFunc(AUX_LEFT, RrocLeft);
	auxKeyFunc(AUX_RIGHT, ProcRight);
	auxMainLoop(display);
	return(0);
}

И реализация:

void CALLBACK ProcUp (void)
{
	MessageBox(0,"Up","Press",MB_ICONINFORMATION);
}

void CALLBACK ProcDown (void)
{
	MessageBox(0,"Down","Press",MB_ICONINFORMATION);
}

void CALLBACK  RrocLeft(void)
{
	MessageBox(0,"Left","Press",MB_ICONINFORMATION);
}

void CALLBACK  ProcRight(void)
{
	MessageBox(0,"Rigth","Press",MB_ICONINFORMATION);
}

Описание

Для реакции на клавиши необходимо создать описание и реализацию функций типа CALLBACK. Далее эти функции привязываются к нажатиям клавиш с помощью auxKeyFunc. Важно связать функции и клавиши до вызова auxMainLoop. В auxKeyFunc передается код клавиши и адрес функции.

Делайте всё необходимое и запускайте. Нажимаете на кнопки - появляются диалоговые окна. Класс !!!. Только окно должно быть в фокусе (активным) иначе сообщения получит кто-то другой.


Шпаргалка

Функции должны быть CALLBACK.

Свяжите функцию с клавишей:

auxKeyFunc (AUX_UP, ProcUp);
......
auxMainLoop (display);

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 16.09.99