2012-08-02 1 views
0

Я новичок в программировании перенасыщения. Я хочу просто создать окно и показать координаты мыши (внутри окна). Нормально, что glutMotionFunc активен, когда я нажимаю кнопку мыши (внутри окна), а курсор выходит из окна? Если нет, то где я ошибаюсь? Я размещаю здесь код:FreeGlut «glutMotionFunc» работает

int lbuttonDown = 0; 

void renderScene(void)   //esegue ogni volta che la finestra deve essere ridisegnata 
{ 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

glutSwapBuffers(); 
} 

void entrata_uscita (int state) 
{ 
    if ((state==GLUT_ENTERED)) 
    { 
printf("DENTRO\n");//playback; se va fuori continuo la riproduzione con i coefficienti attuali 
    } 
    else 
    {printf("FUORI\n");} 
} 

void processMouseActiveMotion(int x, int y) 
{ 
    printf("Mouse premuto mosso a x=%d e y=%d\n",x,y); 
} 

void processMousePassiveMotion(int x, int y) 
{ 
    printf("Mouse mosso a x=%d e y=%d\n",x,y); 
} 

void playback() 
{ 

} 

void processMouse(int button, int state, int x, int y) 
{ 
if ((state == GLUT_DOWN) && (button == GLUT_LEFT_BUTTON)) 
{ 
    printf("Mouse premuto a x=%d e y=%d\n",x,y); 
     lbuttonDown=1; 
} 
else 
{ 
    lbuttonDown=0; 
} 
} 

//Main program 
int main(int argc, char **argv) 
{ 
// init GLUT and create Window 
glutInit(&argc, argv); 
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 
glutInitWindowPosition(300,20); 
glutInitWindowSize(500,500); 
glutCreateWindow("Variation"); 


// register callbacks 
glutDisplayFunc(renderScene); 
//quando l'applicazione è inattiva (nessun evento) (eseguire il suono) 
glutIdleFunc(playback); 
glutMouseFunc(processMouse);      //Detecting Mouse Clicks 
glutMotionFunc(processMouseActiveMotion);   //movimento con un pulsante premuto 
glutPassiveMotionFunc(processMousePassiveMotion); //movimento senza premere i tasti 
glutEntryFunc(entrata_uscita); 

// enter GLUT event processing cycle 
glutMainLoop(); 
return 0; 
} 

ответ

1

Да, это звучит правильно. Если вам нужно другое поведение, вероятно, вы должны использовать комбинацию из glutMouseFunc и glutPassiveMotionFunc.