При создании окна в XLibX11 Мышь Движение Событие
- Каковы маски я предоставить в
SetWindowAttributes.event_mask
члена? - Что я должен пройти 11 В параметре из
XCreateWindow()
- Какие события я ищу в главном цикле обработки сообщений (Где я использую
XNextEvent(lDisplay, &xEvent);
? - Поскольку X ведет себя иначе, чем Win32 API Microsoft, как определить, находится ли мышь над моим окном или окном в моем «приложении», а не поверх рабочего стола?
Я искал аналогичное сообщение. Если есть уже один, пожалуйста, укажите мне правое направление.
Update
Для тех, кто хочет простой ответ на части 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;
switch (xEvent.type) { case MapNotify: break; case Expose: // If this is not the last expose event break if (xEvent.xexpose.count != 0) break; else break; case ConfigureNotify: break; case VisibilityNotify: break; case DestroyNotify: break; case ButtonPress: case ButtonRelease: case EnterNotify: case MotionNotify: case LeaveNotify: if(_mouseHandler) _mouseHandler->HandleInput(lDisplay, &xEvent); break; case KeyPress: case KeyRelease: if(_keyboardHandler) _keyboardHandler->HandleInput(lDisplay, &xEvent); break; default: if(_keyboardHandler) _keyboardHandler->HandleInput(lDisplay, &xEvent); break; }
XLib довольно хорошо документирован. Вы пытались найти в Интернете? Например, [Руководство по программированию на XLIB: маски событий] (http://tronche.com/gui/x/xlib/events/mask.html) –