Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Клавиатура и Glut


Автор: kurlyak 17.2.2008, 13:33
вот код. в нем клавиша Esc работает, а клавиши стрели не работают, программа на них не реагирует. кто знает, скажите почему.

Код

void Keyboard(unsigned char key, int x, int y)
{
    if(key == 27) //Esc
        exit(0);
    if(key == 37) //Left
        exit(0);
    if(key == 39) //Right
        exit(0);
    if(key == 38) //Up
        exit(0);
    if(key == 40) //Down
        exit(0);

}

void main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH);
    
    
    SystemParametersInfo(SPI_GETWORKAREA, 0, &rcCurrentWorkArea, 0);
    
    glutInitWindowSize(rcCurrentWorkArea.right,rcCurrentWorkArea.bottom);
    glutCreateWindow("Draw Example");
    glutFullScreen();

    glutDisplayFunc(Display);
    glutReshapeFunc(Reshape);
    glutKeyboardFunc(Keyboard);
    glutMouseFunc(Mouse);

    glutMainLoop();
}

Автор: Brain 1.4.2008, 18:27
kurlyak, насколько я знаю для клавиш LEFT, RIGHT и т.д. Надо использовать функцию glutSpecialFunc.

До main:
Код


void SpecialFunc(int key, int x, int y)
{
    if(key == GLUT_KEY_LEFT) //Left
        exit(0);
    if(key == GLUT_KEY_RIGHT) //Right
        exit(0);
    if(key == GLUT_KEY_UP) //Up
        exit(0);
    if(key == GLUT_KEY_DOWN) //Down
        exit(0);
}


В main:
Код

...
glutSpecialFunc(SpecialFunc);
...


А Esc оставь в Keyboard. У мну так работает smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)