首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X11鼠标运动事件

X11鼠标运动事件
EN

Stack Overflow用户
提问于 2012-02-20 07:06:58
回答 2查看 14.6K关注 0票数 7

在XLib中创建窗口时

  1. 我提供给SetWindowAttributes.event_mask会员的面具是什么?
  2. 我要把什么传递给XCreateWindow()的第11位参数?
  3. 我在主消息循环(在其中使用XNextEvent(lDisplay, &xEvent); )中寻找的事件是什么?
  4. 由于X的行为与微软的Win32 API不同,我如何确定鼠标是在我的窗口上,还是在我的“应用程序”中的窗口上,而不是在桌面上?

我也找过类似的职位。如果已经有了,请指出正确的方向。

更新

对于那些想要第1-3部分的简单答案的人来说:

1.

代码语言:javascript
复制
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; }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-20 07:18:34

XLib已经有了很好的文档。例如,XLib编程手册:事件掩码

票数 4
EN

Stack Overflow用户

发布于 2012-02-20 07:20:07

我想前三个都有很好的记录。

若要确定鼠标是否在窗口上方,请侦听“输入”和“离开事件”。xev实用程序是了解X窗口系统中存在哪些事件以及它们何时发送的一个很好的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9357382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档