Рисование в приложении gtk3 выполняется в ответ на сигнал «рисовать». Вы подключаете функцию обратного вызова к сигналу «draw», и когда gtk + необходимо перерисовать окно, вызывается ваш обратный вызов.
g_signal_connect (drawingarea, "draw",
G_CALLBACK (draw_cb), NULL);
Обратный вызов выглядит примерно так:
static gboolean
draw_cb (GtkWidget *widget,
cairo_t *cr,
gpointer data)
{
// do your drawing on the provided cairo_t
// ...
return FALSE;
}
Теперь, чтобы обрабатывать щелчки мыши, вам нужно подключить другую функцию обратного вызова к «button-press-event»:
g_signal_connect (drawingarea, "button-press-event",
G_CALLBACK (button_press_event_cb), NULL);
См. Справочные документы для области рисования для небольшого примера и демонстрационную область для рисования для полного применения.