Форум — Development Gtk и координаты мыши. 0 0 Если виджет, пусть это будет GtkDrawingArea.. Оно получает событие "clicked". И в обработчике этого события нужно получить координаты мыши относительно этого виджета. Никто не подскажет как? Ссылка
А, да.. Если это принципиально, то пишу на Си. mono ★★★★★ (04.07.08 16:57:23 MSK) автор топика Ссылка
Если координаты нажатия, то ловишь сигнал button-press-event, записываешь куда-нибудь координаты, извлекая их из структуры GdkEventButton, потом ловишь сигнал clicked. Если координаты отпускания, то аналогично с button-release-event ttnl ★★★★★ (04.07.08 17:36:27 MSK) Показать ответ Ссылка
Ответ на: комментарий от ttnl 04.07.08 17:36:27 MSK И виджет должен быть настроен для реагирование на эти события. ttnl ★★★★★ (04.07.08 17:37:37 MSK) Показать ответ Ссылка
Ответ на: комментарий от ttnl 04.07.08 17:37:37 MSK Извлекаешь при помощи gdk_device_get_state (event->device, gdk_get_default_root_window(), dev_root, NULL); gdk_get_default_root_window() - для координат относительно рабочего стола, тебе же на это место надо поставить указатель на Gdk-окно твоего виджета ttnl ★★★★★ (04.07.08 17:42:13 MSK) Показать ответ Ссылка
Ответ на: комментарий от ttnl 04.07.08 17:42:13 MSK Типа так ttnl ★★★★★ (04.07.08 17:44:48 MSK) Показать ответ Ссылка
Ответ на: комментарий от ttnl 04.07.08 17:44:48 MSK Или такой готовый кусок кода: gboolean on_Window_button_press_event (GtkWidget *Window, GdkEventButton *event, gpointer data) { if (event->button == 1) { double dev_root [2]; int winroot_x, winroot_y; gdk_device_get_state (event->device, gdk_get_default_root_window(), dev_root, NULL); gtk_window_get_position ((GtkWindow *) Window, &winroot_x, &winroot_y); OBTAIN.MouseX = (int)(dev_root [0]) - winroot_x; OBTAIN.MouseY = (int)(dev_root [1]) - winroot_y; } return FALSE; } Тут получаются координаты относительно окна (OBTAIN.MouseX). Сейчас заметил, что можно проще. ttnl ★★★★★ (04.07.08 17:50:45 MSK) Показать ответ Ссылка
Ответ на: комментарий от ttnl 04.07.08 17:50:45 MSK Если нужно чтобы сигнал распространялся, то return TRUE ttnl ★★★★★ (04.07.08 17:51:38 MSK) Ссылка
Спасибо большое за хороший ответ.. сейчас буду разбираться. =) mono ★★★★★ (04.07.08 17:58:57 MSK) автор топика Ссылка