Далее, любая программа будет иметь некоторые элементы пользовательского
интерфейса. В традиции X они называются виджетами. Все
виджеты -- это подклассы базового класса GtkWidget,
поэтому вы можете использовать GtkWidget* для ссылки на
них. (Так как C не имеет родной поддержки наследования объектов,
Gtk+ имеет свой собственный механизм -- глава 9 его описывает.)
Каждый виджет имеет функцию с именем "gtk_widgetname_new()",
аналогичную конструктору в C++ или Java. Эта
функция выделяет новый объект, инициализирует его и возвращает указатель на
него. Все процедуры "_new()" возвращают
GtkWidget* даже если они выделяют его подкласс; это
сделано для удобства.
Как только у вас есть GtkWidget*, представляющий объект,
вы можете манипулировать объектом, используя его методы. Все функции виджетов
Gtk+ начинаются с имени типа, над которым они оперируют, и
принимают указатель на этот тип в качестве первого аргумента. В вышеприведенном
коде, "gtk_container_add()" принимает
GtkContainer* в качестве первого аргумента. Макрос
"GTK_CONTAINER()" транслирует тип GtkWidget*,
а также выполняет проверку типов периода исполнения. Трансляция требуется из-за
того, что C не понимает отношение наследования.
Как вы могли представить, GtkButton и
GtkWindow -- оба подклассы GtkContainer.
GtkContainer может содержать в себе любой другой виджет.
Код создает окно верхнего уровня, помещает внутрь него кнопку, и помещает
метку (строку текста) внутрь кнопки. Затем он устанавливает заголовок окна, и
добавляет небольшой косметический бордюр вокруг кнопки.
Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке,
посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных
администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости
индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.
Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из
первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную
версию журнала в pdf-формате.
Подробнее о проведении акции вы можете прочитать на
странице сайта.