Рассмотрим простые действия с окном в библиотеке GTK+
1. Создание минимального окна
Это процесс описан здесь. В результате мы получаем простую программу с главным окном.

2. Заголовок окна кириллицей
Заголовок окна задается функцией:
gtk_window_set_title (GTK_WINDOW (window), "Окно");
Но если мы просто вставим эту строку, то заголовок не будет выведен. Причиной этого то, что GTK+ не поддерживает кодировку Win-1251. Для работы с GTK+ нужно использовать кодировку UTF-8. Для этого зайдите в меню «Настройки — Редактор — Encoding Settings» и выберите UTF-8.

3. Установка размеров окна и центрирование
Простое окно получает размеры по умолчанию и расположение окна определяет Windows. Для размещения окна в центре используем функцию:
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
Для установления размеров окна используем функцию:
gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);
Полный текст программы:
#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

Теперь мы можем вывести иконку с помощью следующего кода:
//Вывод иконки gtk_window_set_icon_from_file (GTK_WINDOW(window), "home.png", NULL);
Полный текст программы:
#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. Вывод картинки
Теперь выведем эту же иконку в виде картинки в окне.
#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. В этот файл надо добавить одну строчку
IDR_ICO_MAIN ICON "home1.ico"

3. Файл иконки положить в папку проекта (там же где resource.rc)
После компиляции эта иконка будет использована как иконка приложения.

Школа программирования ProgTips 

