XGrabPointer调用后点跳转

时间:2013-01-17 13:07:43

标签: c++ xlib

我有一个用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;
        }
     ...
     }
 }

0 个答案:

没有答案