如何使用gdk_device_get_position()?

Kug*_*gel 5 gtk position glib cursor gdk

我试图在Gdk屏幕上找到指针位置并找到gdk_display_get_pointer(),它工作正常,但它被标记为已弃用并且gdk_device_get_position()现在指的是.

但是我该如何使用这个功能呢?我不能得到一个GdkDevice,因为没有工厂,也没有构造函数.

小智 7

使用Gdk.DeviceManager.

.....
.....
GdkDisplay *display = gdk_display_get_default ();
GdkDeviceManager *device_manager = gdk_display_get_device_manager (display);
GdkDevice *device = gdk_device_manager_get_client_pointer (device_manager);

// do whatever with Gdk.Device, i.e:
int x, y;
gdk_device_get_position (device, NULL, &x, &y);
printf ("x= %d, y=%d", x,y);
Run Code Online (Sandbox Code Playgroud)


Car*_*ood 6

从 GTK+ 3.20+ 开始,luciomrx 的答案变成:

GdkDisplay* display = gdk_display_get_default();
GdkSeat* seat = gdk_display_get_default_seat(display);
GdkDevice* pointer = gdk_seat_get_pointer(seat);
Run Code Online (Sandbox Code Playgroud)