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