При создании окна в XLib
- Какие маски я предоставляю члену
SetWindowAttributes.event_mask
?
- Что я должен передать 11-му параматору
XCreateWindow()
- Какие события я ищу в основном цикле сообщений (где я использую
XNextEvent(lDisplay, &xEvent);
?
- Поскольку X ведет себя не так, как Microsoft Win32 API, как мне определить, находится ли мышь над моим окном или окном в моем «Приложении», а не над рабочим столом?
Я искал похожий пост. Если он уже есть, пожалуйста, укажите мне правильное направление.
Обновление
Для тех, кто хочет простого ответа на части 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;
}