Gtk获取窗口内光标 | 指针 | 鼠标的绝对和相对坐标,绝对和相对位置

获取指针绝对坐标和窗口内的相对坐标

 

方法一:直接调用函数获得

详情见注释,注意window变量来自 Gtkwidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 代码中没有给出

方法二: 注册回调函数获得

其中 event->x_root  ,event->y_root  就是指针在屏幕上的绝对坐标,wx,wy同方法一,为窗口左上角的坐标值,二者作差即可得指针在窗口内的坐标(相对于窗口左上角的坐标值)。

注意window变量来自 Gtkwidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 代码中没有给出,请自行想办法传递进去

其中主函数内监听的信号该从GTK文档中何处寻找呢?

首先我们用 gtk_window_new 新建了一个窗口,窗口类型由 GtkWidget * 声明,所以所有需要用到的信号应从 GtkWidget 中去寻找,点开链接后,下拉至 Signals,下面指示的所有信号都是 Gtkwidget 可以监听的,如下:

Signals

void accel-closures-changed
gboolean button-press-event Run Last
gboolean button-release-event Run Last
gboolean can-activate-accel Run Last
void child-notify No Hooks
void composited-changed Action
gboolean configure-event Run Last
gboolean damage-event Run Last

最左侧是回调函数的返回类型,中间的为监听的信号名称,点击监听名称,可跳转至回调函数的原型示例,包含内部参数应是什么类型等内容。