繁体   English   中英

X11鼠标移动事件

[英]X11 Mouse Movement Event

在XLib中创建窗口时

  1. 我提供给SetWindowAttributes.event_mask成员的掩码是什么?
  2. 我必须传递给XCreateWindow()的第11个参数
  3. 我在主消息循环中正在寻找什么事件(在哪里使用XNextEvent(lDisplay, &xEvent);
  4. 由于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;


  1.   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编程手册:事件掩码

我认为前三个文件有据可查。

要确定鼠标是否在窗口上方,请侦听Enter和Leave事件。 xev实用程序是了解X窗口系统中存在什么事件以及何时发送事件的好方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM