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
。(不知道坐标系。)不要重复问题(你可以编辑上一个问题)