C 指针运动。为什么数字这么高?为什么它以块而不是恒定流打印信息?

C 指针运动。为什么数字这么高?为什么它以块而不是恒定流打印信息?,c,mouseevent,mousemove,xlib,C,Mouseevent,Mousemove,Xlib,嗨!我试图写一个程序,我需要报告每个鼠标运动的位置。我使用PointerMotionMask掩码调用了XSelectInput()函数。一切似乎都正常,但打印后的数字并不是在每次移动后都出现,它们以块的形式出现,而且event.xmotion.x和event.xmotion.y中的数字都非常高,以十万计。 是什么导致了这些庞大的数字? 另外,我的程序是获取每个数字并立即报告,还是将其存储在队列中并分块发送到终端? 谢谢 以下是我的事件循环: while(1) { XNex

嗨!我试图写一个程序,我需要报告每个鼠标运动的位置。我使用
PointerMotionMask
掩码调用了
XSelectInput()
函数。一切似乎都正常,但打印后的数字并不是在每次移动后都出现,它们以块的形式出现,而且
event.xmotion.x
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;     
        }   
    }

除了在末尾打印换行符外,您还可以在末尾执行一个
'\r'
,它会将光标移动到现有行的开头,因此每次只需在其自身上打印。为了更好地执行此操作,请将数字格式更改为固定大小,如:

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

尝试在printf中为缓冲区添加
\n
。(不知道坐标系。)不要重复问题(你可以编辑上一个问题)