我有一个用xlib设置的窗口,我正在使用XGrabPointer将指针锁定在这个窗口内。分辨率为640 x 480
当我调用XGrabPointer时,如果指针位于窗口之外的某处,它会发送一个MotionNotify事件,因为鼠标在窗口内移动。它移动到边界最近的位置。这很好,但是当我第一次移动鼠标后,光标跳到右下角并发出一个新的MotionNotify事件,其中x为639,y为479 ..
为什么要跳这个?我可以以某种方式阻止它吗?
添加一些代码:继承我的XGrabPointer调用
XGrabPointer(m_xlibDisplay,
m_xlibWindowID,
true,
ButtonPressMask,
GrabModeAsync,
GrabModeAsync,
m_xlibWindowID,
None,
CurrentTime);
精简事件循环:
while(XPending(m_xlibDisplay))
{
XNextEvent(m_xlibDisplay, &m_xlibEvent);
switch(m_xlibEvent.type)
{
case MotionNotify:
{
I32 x = m_xlibEvent.xmotion.x;
I32 y = m_xlibEvent.xmotion.y;
...
break;
}
...
}
}