Рассмотрим простые действия с окном в библиотеке GTK+
1. Создание минимального окна
Это процесс описан здесь. В результате мы получаем простую программу с главным окном.
2. Заголовок окна кириллицей
Заголовок окна задается функцией:
1 |
gtk_window_set_title (GTK_WINDOW (window), "Окно"); |
Но если мы просто вставим эту строку, то заголовок не будет выведен. Причиной этого то, что GTK+ не поддерживает кодировку Win-1251. Для работы с GTK+ нужно использовать кодировку UTF-8. Для этого зайдите в меню «Настройки — Редактор — Encoding Settings» и выберите UTF-8.
3. Установка размеров окна и центрирование
Простое окно получает размеры по умолчанию и расположение окна определяет Windows. Для размещения окна в центре используем функцию:
1 |
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); |
Для установления размеров окна используем функцию:
1 |
gtk_window_set_default_size(GTK_WINDOW(window), 300, 200); |
Полный текст программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <gtk/gtk.h> int main (int argc, char *argv[]) { GtkWidget *window; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Hello World"); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(window), 300, 200); gtk_widget_show (window); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_main (); return 0; } |
4. Установка иконки приложения
В левом верхнем углу программы выводится иконка приложения. Она же отображается на панели задач.
Для установки иконки сначала найдем подходящую иконку. Например, на сайте www.iconfinder.com
Теперь мы можем вывести иконку с помощью следующего кода:
1 2 |
//Вывод иконки gtk_window_set_icon_from_file (GTK_WINDOW(window), "home.png", NULL); |
Полный текст программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <gtk/gtk.h> int main (int argc, char *argv[]) { GtkWidget *window; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Окно"); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(window), 300, 200); //Вывод иконки gtk_window_set_icon_from_file (GTK_WINDOW(window), "home.png", NULL); gtk_widget_show (window); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_main (); return 0; } |
В результате получаем окно с новой иконкой.
5. Вывод картинки
Теперь выведем эту же иконку в виде картинки в окне.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
#include <gtk/gtk.h> #include <cairo.h> #include <math.h> void on_draw_event (GtkWidget *widget, cairo_t *cr, gpointer data) { cairo_surface_t *image; image = cairo_image_surface_create_from_png("home.png"); cairo_set_source_surface(cr, image, 80, 80); cairo_paint(cr); } int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *darea; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Домик"); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(window), 300, 300); //Вывод иконки gtk_window_set_icon_from_file (GTK_WINDOW(window), "home.png", NULL); // Вывод картинки darea = gtk_drawing_area_new(); gtk_container_add(GTK_CONTAINER(window), darea); g_signal_connect(G_OBJECT(darea), "draw", G_CALLBACK(on_draw_event), NULL); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show_all(window); gtk_main (); return 0; } |
6. Изменение иконки у exe-файла
Сейчас у нашего приложения в списке файлов выводится стандартная иконка.
Для ее изменения надо добавить файл ресурсов и там указать иконку. Сначала найдем иконку в формате ico.
Сохраним эту иконку с именем home1.ico.
1. Создать файл ресурсов
Меню «Файл — Создать — Пустой файл»
Нажмите «Да» и сохраните файл с именем resource.rc
2. В этот файл надо добавить одну строчку
1 |
IDR_ICO_MAIN ICON "home1.ico" |
3. Файл иконки положить в папку проекта (там же где resource.rc)
После компиляции эта иконка будет использована как иконка приложения.