Компиляция пользовательского GTK + Widget для C ++ - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть собственный виджет GTK +, который я компилирую в файл C ++ (вместо C).Большая часть кода является подмножеством C C ++.Приложение работает нормально.(Прямо сейчас он просто отображает окно верхнего уровня с виджетом внутри него.) Однако я включил деструктор в структуру виджета и заметил, что деструктор никогда не вызывается.

  • Что я долженdo (если не использовать gtkmm), чтобы гарантировать, что деструктор вызывается?
  • Какие еще последствия я должен знать при реализации виджета GTK + в C ++?

1 Ответ

1 голос
/ 07 февраля 2012

GTK использует объектно-ориентированный C, где объектно-ориентированная часть визуализируется с помощью указателей на функции. так что если вы можете кэшировать этот указатель с помощью кода на стороне C виджета gtk, тогда здесь больше информации ...

если у вас не хватает времени, тогда рассмотрите в этом примере ... Найдите gtk_cpu_destroy в этом примере, следующий код устанавливает указатель функции в виджете.

object_class->destroy = gtk_cpu_destroy;

кроме gtkmm, существует также проект gfc , который, я думаю, чище и проще для понимания ...

Какие еще последствия я должен знать при реализации виджета GTK + в C ++?

мой запрос, если ваш пользовательский виджет действительно является виджетом gtk или gdk ... не все события gdk обрабатываются в gtkmm (или, по крайней мере, они не были в 2009 году), поэтому имейте в виду, что ваше приложение может аварийно завершать работу , если ваш виджет широко использует gdk, и события gdk не перехватываются. Такие инструменты, как systemtap, могут помочь вам отследить события, вызывающие проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...