ΠΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² β Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, Π·Π°Π΄Π°ΡΠ° ΠΊΠΎΡΠΎΡΡΡ β Ρ ΡΠ°Π½ΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΡΡ Π΅ΠΌΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² Π²ΠΈΠ΄ΠΆΠ΅ΡΠ΅ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π²Ρ Π·Π°Π΄Π°Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ GtkWidget ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ GtkBox ΡΠ°ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠΈΠΏΠ° GtkWidget, Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π² Π΄ΡΡΠ³ΠΎΠΉ.
Π£ ΡΠΈΠΏΠ° GtkBox ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ°:
β‘ GtkHBox β ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΠΉ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ;
β‘ GtkVBox β ΠΎΠ΄Π½ΠΎΡΡΠΎΠ»Π±ΡΠΎΠ²ΡΠΉ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: homogeneous ΠΈ spacing:
GtkWidget* gtk_hbox_new(gboolean homogeneous, gint spacing);
GtkWidget* gtk_vbox_new(gboolean homogeneous, gint spacing);
ΠΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ Π²ΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ homogeneous β Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠ°Π²Π΅Π½ TRUE, Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ². ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ spacing Π·Π°Π΄Π°Π΅Ρ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ .
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΠΎΠ·Π΄Π°Π½, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² Π½Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ gtk_box_pack_start ΠΈ gtk_box_pack_end:
void gtk_box_pack_start(GtkBox *box, GtkWidget *child,
gboolean expand, gboolean f ill, guint padding);
void gtk_box_pack_end(GtkBox *box, GtkWidget *child,
gboolean expand, gboolean fill, guint padding);
Π€ΡΠ½ΠΊΡΠΈΡ gtk_box_pack_start Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° GtkHBox ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΊΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° GtkVBox; ΡΡΠ½ΠΊΡΠΈΡ gtk_box_pack_end, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΎΡ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΈ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΊΡΠ°Π΅Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ ΠΈ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Π² ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅.
Π ΡΠ°Π±Π». 16.1 ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ gtk_box_pack_start ΠΈΠ»ΠΈ gtk_box_pack_end.
Π’Π°Π±Π»ΠΈΡΠ° 16.1
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ GtkBox *box ΠΠ°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ GtkWidget *child ΠΠΈΠ΄ΠΆΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ gboolean expand ΠΡΠ»ΠΈ ΡΠ°Π²Π΅Π½ TRUE, Π΄Π°Π½Π½ΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΡ ΡΠ»Π°Π³ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π²Π΅Π½ TRUE gboolean fill ΠΡΠ»ΠΈ ΡΠ°Π²Π΅Π½ TRUE, Π΄Π°Π½Π½ΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π²ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΅Π΅ ΠΊΠ°ΠΊ ΠΎΡΡΡΡΠΏΠ° ΠΎΡ ΠΊΡΠ°Π΅Π². ΠΠ΅ΠΉΡΡΠ²ΡΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΠ»Π°Π³ expand ΡΠ°Π²Π΅Π½ TRUE guint padding Π Π°Π·ΠΌΠ΅Ρ ΠΎΡΡΡΡΠΏΠ° Π²ΠΎΠΊΡΡΠ³ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Π² ΠΏΠΈΠΊΡΠ΅Π»Π°ΡΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ (ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.3).
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.3. ΠΠ°ΠΊΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΡΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ²-ΠΌΠ΅ΡΠΎΠΊ ΡΠΈΠΏΠ° GtkLabel Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠΈΠΏΠ° GtkHBox ΠΈ GtkVBox. ΠΠΈΠ΄ΠΆΠ΅ΡΡ-ΠΌΠ΅ΡΠΊΠΈ β ΠΏΡΠΎΡΡΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΡΠΎΡΠΊΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°Π·ΠΎΠ²ΠΈΡΠ΅ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ container.c:
#include <gtk/gtk.h>
void closeApp(GtkWidget *window, gpointer data) {
gtk_main_quit();
}
/* ΠΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅
close/destroy. (ΠΠ»Ρ ΠΎΡΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ TRUE.) */
gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer data) {
printf("In delete_event\n");
return FALSE;
}
int main (int argc, char *argv[]) {
GtkWidget *window;
GtkWidget *label1, *label2, *label3;
GtkWidget *hbox;
GtkWidget *vbox;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW window), "The Window Title");
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WTNDOW(window), 300, 200);
g_signal_connect(GTK_OBJECT(window), "destroy",
GTK_SIGNAL_FUNC(closeApp), NULL);
g_signal_connect(GTK_OBJECT(window), "delete_event",
GTK_SIGNAL_FUNC(delete_event), NULL);
label1 = gtk_label_new("Label 1");
label2 = gtk_label_new("Label 2");
label3 = gtk_label_new("Label 3");
hbox = gtk_hbox_new(TRUE, 5);
vbox = gtk_vbox_new(FALSE, 10);
gtk_box_pack_start(GTK_BOX(vbox), label1, TRUE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), label2, TRUE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(hbox), label3, FALSE, FALSE, 5);
gtk_container_add(GTK_CONTAINER(window), hbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡ Π΅ΠΌΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ²-ΠΌΠ΅ΡΠΎΠΊ Π² Π²Π°ΡΠ΅ΠΌ ΠΎΠΊΠ½Π΅ (ΡΠΈΡ. 16.6).
Π ΠΈΡ. 16.6
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π΄Π²Π° Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²: hbox ΠΈ vbox. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ gtk_box_pack_start Π²Ρ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ vbox Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ label1 ΠΈ label2, ΠΏΡΠΈΡΠ΅ΠΌ label2 ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Ρ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΊΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ label1. ΠΠ°Π»Π΅Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ vbox ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π°ΡΡΠ΄Ρ Ρ ΠΌΠ΅ΡΠΊΠΎΠΉ label3 Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ hbox.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ hbox Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΎΠΊΠ½ΠΎ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ gtk_widget_show_all.
Π‘Ρ Π΅ΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π»Π΅Π³ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠΈΡ. 16.7.
Π ΠΈΡ. 16.7
ΠΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ²ΡΠΈΡΡ Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ, ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ, ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ ΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ, Π²Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² GTK+. ΠΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ, ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠΈΠΌ GTK+, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ.
ΠΠΈΠ΄ΠΆΠ΅ΡΡ GTK+
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ API ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² GTK+, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
GtkWindow
GtkWindow β Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ GTK+. ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ².
GtkWidget
+---- GtkContainer
+---- GtkBin
+---- GtkWindow
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π΅ΡΡΡΠΊΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² API GtkWindow, Π½ΠΎ Π΄Π°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ.
GtkWidget* gtk_window_new(GtkWindowType type);
void gtk_window_set_title(GtkWindow *window, const gchar *title);
void gtk_window_set_position(GtkWindow *window, GtkWindowPosition position);
void gtk_window_set_default_size(GtkWindow *window, gint width, gint height);
void gtk_window_resize(GtkWindow *window, gint width, gint height);
void gtk_window_set_resizable(GtkWindow *window, gboolean resizable);
void gtk_window_present(GtkWindow *window);
void gtk_window_maximize(GtkWindow *window);
void gtk_window_unmaximize(GtkWindow *window);
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠ½ΠΊΡΠΈΡ gtk_window_new ΡΠΎΠ·Π΄Π°Π΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΡΡΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° Π½Π΅ Π·Π°Π΄Π°Π½ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. ΠΠ±ΡΡΠ½ΠΎ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΊΠ½ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ ΠΈ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΠΎΠΊΠ½Π° Π½Π° ΡΠΊΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ gtk_widget_show.
Π€ΡΠ½ΠΊΡΠΈΡ gtk_window_set_title ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ»ΠΎΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΈΠ½ΡΠΎΡΠΌΠΈΡΡΡ ΠΎΠΊΠΎΠ½Π½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΎΠΊΠ½Π° ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΎΠΊΠΎΠ½Π½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ, Π° Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° GTK+, ΡΡΠΈΡΡ, ΡΠ²Π΅Ρ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ° Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ Π²ΡΠ±ΠΎΡΠ° ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°.
Π€ΡΠ½ΠΊΡΠΈΡ gtk_window_setposition ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ position ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π² ΡΠ°Π±Π». 16.2.
Π’Π°Π±Π»ΠΈΡΠ° 16.2
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ position ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ GTK_WIN_POS_NONE ΠΠΊΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΏΠΎ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° GTK_WIN_POS_CENTER ΠΠΊΠ½ΠΎ ΡΠ΅Π½ΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ GTK_WIN_POS_MOUSE Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Π·Π°Π΄Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ ΠΌΡΡΠΈ GTK_WIN_POS_CENTER_ALWAYS ΠΠΊΠ½ΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΡΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° GTK_WIN_POS_CENTER_ON_PARENT ΠΠΊΠ½ΠΎ ΡΠ΅Π½ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° (ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΠΎΠΊΠΎΠ½)Π€ΡΠ½ΠΊΡΠΈΡ gtk_window_set_default_size Π·Π°Π΄Π°Π΅Ρ ΠΎΠΊΠ½ΠΎ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π² Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ GTK+. Π―Π²Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠΊΠ½Π° Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠΊΠ½Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡΠΎ ΡΠ΅ΠΌ-Π»ΠΈΠ±ΠΎ ΠΈΠ»ΠΈ ΡΠΊΡΡΡΠΎ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΊΠ½Π° ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ gtk_window_resize. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΊΠ½Π°, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π΅Π³ΠΎ Π³ΡΠ°Π½ΠΈΡΡ ΠΌΡΡΡΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΡΠΎΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ gtk_window_set_resizeable, ΠΏΡΠΈΡΠ°Π²Π½Π΅Π½Π½ΡΡ FALSE.