繁体   English   中英

如何在 C 应用程序中在 X11 上设置鼠标光标

[英]How to set mouse cursor on X11 in a C application

我有一个相当大且相当老的 C 应用程序,它已移植到 Linux。 我负责让鼠标光标正常工作,但有一些问题。 我能够将我们需要的大多数游标转换为使用XFontCursor提供的标准游标,方法如下:

gCursorTable[waitCurs] = XCreateFontCursor(gDisplay, XC_watch);
...
XDefineCursor(gDisplay, WHostWindow(w), gCursorTable[cursor]);
XFlush(gDisplay);

这对于在 XFontCursor 提供的极其有限的(有用的)游标列表中具有类似物的游标来说很好,但是我想设置其他内置的主题游标。 例如,我希望能够在我的应用程序中将光标设置为 bd_double_arrow(它包含在每个光标主题中,并且是 Windows 的标准对角线大小光标),但您显然无法使用 XCreateFontCursor 做到这一点。 这看起来很基本,但对于我的生活,我找不到任何关于如何做到的描述。

我只想知道其他 X11 应用程序是如何设置光标的,因为它们显然是从全局主题中获取的,而不仅仅是使用 XCreateFontCursor。

使用主题游标的最简单方法是使用 Xcursor 库。

#include <X11/Xcursor/Xcursor.h>
...
Cursor c = XcursorLibraryLoadCursor(dpy, "sb_v_double_arrow");
XDefineCursor (dpy, w, c);

名称是来自X11/cursorfont.h标准光标名称,无XC_ 如果主题有额外的光标,例如bd_double_arrow ,也可以使用这些名称(但并非所有主题都有!)

如果主题没有替代某些核心 X 光标,则库将回退到核心光标。

单击该页面上的一些链接后:尝试XCreatePixmapCursor 从它的描述来看,您似乎可以创建任何您想要的 2 色光标。

暂无
暂无

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

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