GtkWidget* gtk_window_new(GtkWindowType type);
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ type ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠΊΠ½Π° ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
β‘ GTK_WINDOW_TOPLEVEL β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ ΡΠ°ΠΌΠΊΠΎΠΉ;
β‘ GTK_WINDOW_POPUP β ΠΎΠΊΠ½ΠΎ Π±Π΅Π· ΡΠ°ΠΌΠΊΠΈ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ Π΄Π»Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
ΠΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ GTK_WINDOW_TOPLEVEL, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΠΎΠΊΠΎΠ½, ΠΊΠ°ΠΊ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΏΠΎΠ·ΠΆΠ΅, Π΅ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ.
ΠΡΠ·ΠΎΠ² gtk_window_new ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠΊΠ½ΠΎ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Ρ Π²Π°Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΠΎΠΊΠ½Π° Π½Π° ΡΠΊΡΠ°Π½ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΊΠ½Π°, Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ Ρ.Π΄. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΠΊΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ gtk_widget_show:
gtk_widget_show(window);
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΈΠΏΠ° GtkWidget, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ gtk_main. ΠΡΠ° ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ (interactivity process), ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ GTK+, ΠΈ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Π³ΠΎ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ gtk_main_quit. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ gtk1.Ρ, ΡΡΠΎΠ³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΊΡΡΡΠΈΡ ΠΎΠΊΠ½Π°. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΠΎ, ΡΠ΅Π»ΠΊΠ½ΡΠ² ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ ΠΏΠΈΠΊΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π°ΠΊΡΡΡΠΈΡ ΠΎΠΊΠ½Π° ΠΈ ΡΠ±Π΅Π΄ΠΈΠ²ΡΠΈΡΡ Π² ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΡΡΠΎΠΊΠΈ, ΠΏΡΠΈΠ³Π»Π°ΡΠ°ΡΡΠ΅ΠΉ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅ΡΡ Ρ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅. Π‘Π΅ΠΉΡΠ°Ρ Π·Π°Π²Π΅ΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΆΠ°Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C> Π² ΠΎΠΊΠ½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ gtk1.
Π‘ΠΎΠ±ΡΡΠΈΡ, ΡΠΈΠ³Π½Π°Π»Ρ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ
Π£ Π²ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ GUI Π΅ΡΡΡ Π½Π΅ΡΡΠΎ ΠΎΠ±ΡΠ΅Π΅. ΠΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΎΡΠ²Π΅Ρ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ°ΡΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΠ΅Π±Π΅ ΠΎΡΡΠ°Π½ΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Π²Π²ΠΎΠ΄Π° ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π½Π΅ΡΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π²ΡΠ±ΠΎΡΠ° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΠ²Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π΅Π½ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ GUI, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΠΌΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΠΊΠ½Π°.
Π£ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Π΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΌ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½Π° ΡΡΠ° Π·Π°Π΄Π°ΡΠ°. ΠΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΡΡΠΈ ΠΈΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅. ΠΠ°ΠΆΠ°ΡΠΈΠ΅ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ·ΠΎΠ²Π΅Ρ "ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ". ΠΠ°ΡΠ΅ΠΌ ΠΏΠΈΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΆΠ΄Π΅Ρ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅ Π΅Π³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ.
ΠΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΈ ΡΠΎΠ±ΡΡΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ° X Window System, Π½ΠΎ ΠΎΠ½ΠΈ ΠΌΠ°Π»ΠΎ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ GTK+, Ρ.ΠΊ. ΠΎΠ½ΠΈ ΠΎΡΠ΅Π½Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅Π»ΡΠΎΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ, X ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΡΡΠΈ, Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅Ρ.
Π£ GTK+ Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ. ΠΡ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠ° Π‘, ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ.
Π‘Π½Π°ΡΠ°Π»Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ. Π‘ΠΈΠ³Π½Π°Π» GTK+ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠΈΠΏΠ° GtkObject, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π€ΡΠ½ΠΊΡΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»Π°, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΠΈΠ³Π½Π°Π» GTK+ β ΡΡΠΎ Π½Π΅ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΡΠ΅ΠΌ ΡΠΈΠ³Π½Π°Π» UNIX, ΠΎΠ±ΡΡΠΆΠ΄Π°Π²ΡΠΈΠΉΡΡ Π² Π³Π»Π°Π²Π΅ 11.
ΠΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ GTK+, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ΄ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»Π° β ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°.
ΠΡΠΎΡΠΎΡΠΈΠΏ ΠΈΠ»ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
void a_callback_function(GtkWidget *widget, gpointer user_data);
ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΏΠ΅ΡΠ²ΡΠΉ β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ, ΠΏΠΎΡΠΎΠ΄ΠΈΠ²ΡΠΈΠΉ ΡΠΈΠ³Π½Π°Π», Π²ΡΠΎΡΠΎΠΉ β ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π»ΡΠ±ΡΡ ΡΠ΅Π»Π΅ΠΉ.
Π‘Π²ΡΠ·Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΠΎΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. ΠΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ g_signal_connect ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ Π΅ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ, ΠΈΠΌΡ ΡΠΈΠ³Π½Π°Π»Π° Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ, ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΈ Π²Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ:
gulong g_signal_connect(gpointer *object, const gchar *name,
GCallback func, gpointer user_data);
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π½Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΎΠ², ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ.
Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ API GTK+ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»ΠΎΠ², ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ GTK+ 2 Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ gtk_signal_connect. ΠΠ½Π° Π±ΡΠ»Π° Π·Π°ΠΌΠ΅Π½Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ g_signal_connect ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π²ΠΎ Π²Π½ΠΎΠ²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.
ΠΡ ΠΎΠΏΡΠΎΠ±ΡΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ g_signal_connect Π² ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ 16.2.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.2. Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ gtk2.c Π²ΡΡΠ°Π²ΡΡΠ΅ Π² ΡΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈ ΡΠ²ΡΠΆΠΈΡΠ΅ ΡΠΈΠ³Π½Π°Π» clicked (ΡΠ΅Π»ΡΠΎΠΊ ΠΌΡΡΡΡ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅) Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ:
#include <gtk/gtk.h>
#include <stdio.h>
static int count = 0;
void button_clicked(GtkWidget *button, gpointer data) {
printf("%s pressed %d time(s) \n", (char *)data, ++count);
}
int main(int argc, char* argv[]) {
GtkWidget *window;
GtkWidget *button;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
button = gtk_button_new_with_label("Hello World!");
gtk_container_add(GTK_CONTAINER(window), button);
g_signal_connect(GTK_OBJECT(button), "clicked",
GTK_SIGNAL_FUNC(button_clicked), "Button 1");
gtk_widget_show(button);
gtk_widget_show(window);
gtk_main();
return 0;
}
ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ gtk2.c. ΠΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΈ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΡΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ gtk1.Ρ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΡΡΠΈΠ² Π΅Π΅, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΠΊΠ½ΠΎ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π»ΡΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡΡΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ (ΡΠΈΡ. 16.5).
Π ΠΈΡ. 16.5
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄Π²Π° Π½ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ gtk2.c: Π²ΠΈΠ΄ΠΆΠ΅Ρ GtkButton ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°. GtkButton β ΡΡΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ΅ΠΊΡΡ, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ "Hello World", ΠΈ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΈΠ³Π½Π°Π», Π½Π°Π·Π²Π°Π½Π½ΡΠΉ clicked, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠ½ΠΎΠΏΠΊΡ ΡΠ΅Π»ΠΊΠ°ΡΡ ΠΌΡΡΡΡ.
Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° button_clicked ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ clicked Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ g_signal_connect:
g_signal_connect(GTK_OBJECT(app), "clicked",
GTK_SIGNAL_FUNC(button_clicked), "Button 1");
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΈΠΌΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ β "Button 1" β ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ΅ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠΊΠ½ΠΎ β Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ gtk_button_new_with_label β ΡΡΠ½ΠΊΡΠΈΡ gtk_widget_show Π΄Π΅Π»Π°Π΅Ρ Π΅Π΅ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ.
ΠΠ»Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΎΠΊΠ½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ gtk_container_add. ΠΡΠ° ΠΏΡΠΎΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ GtkWidget Π²Π½ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° GtkContainer ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ:
void gtk_container_add(GtkContainer* container, GtkWidget *widget);
ΠΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅, GtkWindow β ΠΏΠΎΡΠΎΠΌΠΎΠΊ ΠΈΠ»ΠΈ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° GtkContainer. ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΠΈΠΏ Π²Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΎΠΊΠ½Π° ΠΊ ΡΠΈΠΏΡ GtkContainer Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ° GTK_CONTAINER:
gtk_container_add(GTK_CONTAINER(window), button);
Π€ΡΠ½ΠΊΡΠΈΡ gtk_container_add ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΎΠΊΠ½Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°, Π½ΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ°ΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π² ΡΠ°Π·Π½ΡΡ ΡΠ°ΡΡΡΡ ΠΎΠΊΠ½Π°. Π£ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° GTK+ Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ, ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²,
ΠΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²
ΠΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° GUI ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΆΠ½Π° Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΈ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π½Π°ΠΈΠ»ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΡΡΡΠ΄Π½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ. Π Π΅Π°Π»ΡΠ½Π°Ρ ΡΡΡΠ΄Π½ΠΎΡΡΡ Π² ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΎΠΊΠΎΠ½, ΡΠ΅ΠΌ, ΡΡΠΈΡΡΠΎΠ² ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ Π΅ΠΌ. Π’ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΡΠΌ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ GUI, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. Π£ GTK+ Π΅ΡΡΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠΈΠ΄ΠΆΠ΅ΡΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π² ΠΎΠΊΠ½Π°Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² (box) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΈΠΏ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. GTK+ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ²-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ GTK+.