2014-01-20 5 views
1

안녕하세요! 모든 마우스 동작의 위치를보고해야하는 프로그램을 작성하려고합니다. PointerMotionMask 마스크를 사용하여 XSelectInput() 함수를 호출했습니다. 모든 것이 제대로 작동하는 것처럼 보이지만 인쇄 후 숫자는 모든 이동 후에 나타나지 않으며 블록으로 표시되며 및 event.xmotion.y의 숫자는 수십만 개로 매우 높습니다.
큰 숫자의 원인은 무엇입니까?
또한 내 프로그램이 모든 전화 번호를 받고 즉시보고하거나 대기열에 저장되어 터미널에 블록으로 전송됩니까?
감사포인터 동작. 왜 숫자가 그렇게 높습니까? 왜 그것은 상수 스트림이 아닌 블록의 정보를 출력합니까?

가 여기 내 이벤트 루프 : 그것은 기존 라인의 시작 부분으로 커서를 이동합니다 마지막에 개행 문자를 인쇄 게다가

while(1) 
    { 
     XNextEvent(display, &event); 
     switch (event.type) 
     { 
      case Expose: 
       glClearColor(1.0, 1.0, 0.0, 1.0); 
        glClear(GL_COLOR_BUFFER_BIT); 
        glFlush(); 
        glXSwapBuffers(display, glxwin);    
       break; 
      case MotionNotify: 
       printf("%d, %d", event.xmotion.x, event.xmotion.y); 
       break; 
      case ButtonPress: exit(1); 
      default: break;  
     } 
    } 
+0

버퍼링을 위해 printf에 \ n을 추가하십시오. (비록 좌표계에 대한 생각이 없습니다.) – Mat

+0

질문을 중복하지 마십시오 (이전에 편집 할 수 있습니다) – prajmus

+0

kk 몰랐습니다. – sandbucket

답변

0

, 당신은 또한 결국 그것을에서 '\r'을 할 수있는, 그래서 매번 인쇄 될 것입니다. 이 작업을 더 잘하려면 다음과 같이 숫자 서식을 고정 된 크기로 변경하십시오.

printf("%4d, %4d \r", event.xmotion.x, event.xmotion.y); 
fflush(stdout) ;