私は過剰プログラミングの初心者です。ウィンドウを作成して、マウスの座標(ウィンドウ内)を表示したいだけです。(ウィンドウ内で)マウスのボタンを押し、カーソルがウィンドウの外にあるときに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;
}