繁体   English   中英

将 X11 cursor 设置为箭头

[英]Set X11 cursor to arrow

我在调用 XCreateWindow() 时尝试了以下操作:

unsigned long ctt_attribute_mask = CWWinGravity | CWCursor;

ctt_attributes->win_gravity = NorthEastGravity;
ctt_attributes->cursor = XC_arrow;

ctt_window = XCreateWindow(dpy, parent, ctt_xpos, ctt_ypos,
             ctt_xy_size, ctt_xy_size, ctt_border,
             ctt_depth, ctt_class, ctt_visual,
             ctt_attribute_mask, ctt_attributes);

这将创建 window,但在指针滚动到 window 时不会影响指针。

当鼠标出现在我的 window 上时,我想使用用户桌面环境的标准指针 cursor。

Xlib 是必需的,因为这是一个与工具包无关的程序。

ETA : 附加上下文可用; 请参阅源文件中从第 35 行开始的create_ctt_window

  1. ctt_attributes->cursor = XCreateFontCursor(dpy, XC_arrow);
  2. 这不是桌面环境的标准指针cursor,这是X11比较丑的位图cursor。 如果您想要主题游标,请使用 libXcursor。 我没有这方面的经验。

这是 The Xlib Programming Manual, vol 1, p 182 中的示例。

#include <X11/cursorfont.h>
int cursor_shape = XC_arrow;
Window window;
Cursor cursor;
cursor = XCreateFontCursor(display, cursor_shape);
XDefineCursor(display, window, cursor);
/* Now cursor will appear when pointer is in window */ 

所以看起来 nm 是正确的。 您需要调用XCreateFontCursor将 XC_arrow(它只是一个 integer 指定光标在字体的编码向量中的位置)转换为 Cursor 资源。 我认为 Cursor 资源也只是一个 integer。 这就是为什么你没有编译错误。 但是您确实存在类型不匹配。

暂无
暂无

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

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