0

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

1 回答 1

1

是的,听起来是正确的。如果您想要不同的行为,您可能应该使用glutMouseFuncglutPassiveMotionFunc的组合。

于 2012-09-15T01:37:27.860 回答