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