Мой вопрос связан с GTK2 и WxWidgets (на самом деле wxGTK).Нужна помощь в написании "backgroundless" виджет WxWidgets (wxGTK) с помощью GTK2
В wxGTK все элементы управления имеют серый фон по умолчанию, и его невозможно удалить. У меня есть текстурированная панель с пользовательскими дочерними элементами управления, и у каждого из моих элементов управления есть уродливая серая граница, которую я не могу удалить. Я могу установить только цвет фона и сделать цвет панели тем же. Так что мне нужен вид «бесцветного» управления в wxGTK.
У меня есть опыт работы с MS Windows перед Linux. Насколько я помню, в MS Windows каждый оконный элемент управления (то есть виджет) принимает сообщение (событие) WM_ERASEBKGND, а затем Сообщение WM_PAINT. Фон рисуется в WM_ERASEBKGND обработчиком событий, поэтому вы можете легко оставить фон родительского элемента нетронутым и нарисовать все элементы виджета поверх него простым переписанием этого обработчика.
Это не тот случай с wxGTK (и GTK2)!
На самом деле все виджеты в wxGTK основаны на пользовательском виджетах «wxPizza» GTK, который получен из виджета GtkFixed. Любой вид виджета wxPizza имеет собственное окно gdk, поэтому невозможно реализовать пользовательские виджеты без окон, используя стандартные элементы управления wxGTK, на основе виджета «wxPizza».
Итак, я решил реализовать еще один виджет GTK2, чтобы сделать «бесцветные» элементы управления доступными для wxWidgets. Я реализовал виджет GTK2 без окон, полученный из GtkFixed. Чтобы сделать это без окон, я использовал функцию gtk_widget_set_has_window (другой способ установить флаг GTK_NO_WINDOW).
Все работает, за исключением координат рисования, которые находятся в координатном пространстве родительского окна. Таким образом, элементы виджета нарисованы в верхнем левом положении родительского окна. Это проблема, которую я не могу решить. Может быть, мне нужно добавить GtkEventBox к своему пользовательскому виджету?
Возможно, есть еще один способ реализовать такую функциональность (безфотографические виджеты) в GTK2? Что ты об этом думаешь?
Спасибо заранее, Илья
Похоже, что Gtkfixed бросает ключ. Не могли бы вы добавить + x_offset (от координаты x) + y_offset (от координаты y) к координатам ничьей. Но затем я все еще использую модифицированную glade-2.12.2 для сборки своих интерфейсов непосредственно в C без Wx и управления большим количеством «взглядов» с помощью специального файла gtkrc. – technosaurus