你好!我正在尝试编写一个程序,需要报告每个鼠标运动的位置。我已经打电话给XSelectInput()
函数与PointerMotionMask
面具。一切似乎都正常,但打印后的数字不会在每次移动后出现,它们以块的形式出现,并且也以块的形式出现event.xmotion.x
and event.xmotion.y
非常高,有几十万。
是什么造成了如此大的数字?
另外,我的程序是获取每个数字并立即报告它,还是将其存储在队列中并分块发送到终端?
Thanks
这是我的事件循环:
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) ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)