Я пишу программу на C, использующую библиотеки GTK, которая считывает положение курсора и записывает его в другую функцию. Я написал код, который может точно читать данные положения курсора, но я не могу понять, как связать событие перемещения курсора с функцией.
Вот код, который у меня есть:
int main(int argc, char **argv){
GdkWindow *window;
GtkWidget *gtk_window;
GdkDevice *mouse;
gint x = 0;
gint y = 0;
gdk_init(&argc, &argv);
gtk_init(&argc, &argv);
gtk_window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(gtk_window);
window = gtk_widget_get_window(GTK_WIDGET(gtk_window));
gdk_window_maximize(window);
gdk_window_set_title(window, "write-mouse");
GdkSeat *seat = gdk_display_get_default_seat (gdk_display_get_default ());
mouse = gdk_seat_get_pointer (seat);
gdk_window_get_device_position (window, mouse, &x, &y, NULL);
//read cursor position at startup to test code
g_print("X = %d\n", x);
g_print("Y = %d\n", y);
//g_signal_connect (mouse, "something?", G_CALLBACK (print_mouse), NULL);
gtk_main();
}
static void print_mouse(GdkDevice *mouse, gpointer data){
gint x = 0;
gint y = 0;
//do I need to pass the window object to "print_mouse" function too?
//can I point to it using some gtk function?
gdk_window_get_device_position (window, mouse, &x, &y, NULL);
g_print("X = %d\n", x);
g_print("Y = %d\n", y);
}
Я предполагаю, что мне нужно использовать "g_signal_connect ()", чтобы связать событие движения курсора с функцией "print_mouse", но я не могу понять, что нужно в качестве аргументов заставить его работать.
Что я должен поместить в поле "details_signal" в g_signal_connect ()?
Есть ли лучший способ сделать это полностью?