在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;
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;
}
答案 0 :(得分:4)
XLib有很好的记录。例如XLib Programming Manual: Event Masks
答案 1 :(得分:2)
我认为前三个是有据可查的。
要确定鼠标是否在窗口上,请收听Enter and Leave事件。 xev
实用程序是了解X窗口系统中存在哪些事件以及何时发送它们的好方法。