我是过剩编程的新手。我只想创建一个窗口并显示鼠标的坐标(在窗口内)。当我按下鼠标按钮(在窗口内)并且光标在窗口外时,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;
}