簡體   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