Событие движения мыши X11

При создании окна в XLib

  1. Какие маски я предоставляю члену SetWindowAttributes.event_mask ?
  2. Что мне нужно передать 11-му параметру XCreateWindow ()
  3. Какие события я ищу в основном цикле сообщений (где я использую XNextEvent (lDisplay, & xEvent); ?
  4. Поскольку X ведет себя иначе, чем Win32 API от Microsoft, как мне определить, находится ли указатель мыши над моим окном или окном в моем «Приложении», а не над рабочим столом?

Я искал аналогичный Сообщение. Если он уже существует, укажите мне правильное направление.


Обновление

Для тех, кто хочет получить простой ответ на части 1-3:

1.

xAttributes.event_mask =  ExposureMask | KeyPressMask | ButtonPress |
                          StructureNotifyMask | ButtonReleaseMask |
                          KeyReleaseMask | EnterWindowMask | LeaveWindowMask |
                          PointerMotionMask | Button1MotionMask | VisibilityChangeMask |
                          ColormapChangeMask;

2.

unsigned long valuemask = CWEventMask | CWBackPixel | CWBorderPixel | CWCursor;


  1.   переключатель (xEvent.type)
     {
    case MapNotify:
    ломать;
    case Expose:
     // Если это не последний перерыв в открытии события
    если (xEvent.xexpose.count! = 0)
    ломать;
    еще
    ломать;
    case ConfigureNotify:
    ломать;
    case VisibilityNotify:
    ломать;
    case DestroyNotify:
    ломать;
    case ButtonPress:
    case ButtonRelease:
    case EnterNotify:
    case MotionNotify:
    case LeaveNotify:
    если (_mouseHandler)
     _mouseHandler-> HandleInput (lDisplay, & xEvent);
    ломать;
    case KeyPress:
    case KeyRelease:
    если (_keyboardHandler)
     _keyboardHandler-> HandleInput (lDisplay, & xEvent);
    ломать;
    дефолт:
    если (_keyboardHandler)
     _keyboardHandler-> HandleInput (lDisplay, & xEvent);
    ломать;
     }
    
5
задан Matthew Hoggan 20 February 2012 в 07:36
поделиться