c – X11鼠标移动事件

在XLib中创建窗口时

>我为SetWindowAttributes.event_mask成员提供了哪些掩码?
>我需要传递给XCreateWindow的第11个参数()
>我在主消息循环中寻找的事件是什么(我在哪里使用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;
                }

解决方法:

XLib有很好的记录.例如XLib Programming Manual: Event Masks

上一篇:linux – 如何使用Xlib恢复窗口?


下一篇:C – 在X Window中更改光标