Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 285

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

Β Β Β Β Β Β Β Β +----Β GtkBin

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β +----Β GtkWindow

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ дСсятки Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² API

GtkWindow
, Π½ΠΎ Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ особого внимания.

<b>GtkWidget* gtk_window_new(GtkWindowType type);</b>

<b>void gtk_window_set_title(GtkWindow *window, const gchar *title);</b>

<b>void gtk_window_set_position(GtkWindow *window, GtkWindowPosition position);</b>

<b>void gtk_window_set_default_size(GtkWindow *window, gint width, gint height);</b>

<b>void gtk_window_resize(GtkWindow *window, gint width, gint height);</b>

<b>void gtk_window_set_resizable(GtkWindow *window, gboolean resizable);</b>

<b>void gtk_window_present(GtkWindow *window);</b>

<b>void gtk_window_maximize(GtkWindow *window);</b>

<b>void gtk_window_unmaximize(GtkWindow *window);</b>

Как Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, функция

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.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вашС ΠΎΠΊΠ½ΠΎ присутствуСт Π½Π° экранС ΠΈ Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Ρ‚.Π΅. Π½Π΅ свСрнуто ΠΈΠ»ΠΈ скрыто, ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ функция

gtk_window_present
. Она ΠΏΠΎΠ»Π΅Π·Π½Π° для Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½, Ρ‚.ΠΊ. позволяСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠ½Π° Π½Π΅ свСрнуты, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, для раскрытия ΠΎΠΊΠ½Π° Π½Π° вСсь экран ΠΈ Π΅Π³ΠΎ сворачивания Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
gtk_window_maximize
ΠΈ
gtk_window_minimize
.

GtkEntry

GtkEntry
β€” Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ однострочного тСкстового поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСтся для Π²Π²ΠΎΠ΄Π° простых тСкстовых Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΡƒΠ·Π»Π° сСти. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π²Ρ‹Π·ΠΎΠ²Ρ‹ API, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ считываниС Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ тСкста, Ρ‚Π°ΠΊ ΠΈ Π΅Π³ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ Π² символах, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ мСстополоТСниСм тСкста ΠΈ Π΅Π³ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ.

GtkWidget

Β +----GtkEntry

МоТно Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ

GtkEntry
Π½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π²Π΅Π·Π΄ΠΎΡ‡Π΅ΠΊ (ΠΈΠ»ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ символа) Π½Π° мСстС Π½Π°Π±Ρ€Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠΊΠ²Π΅Π½Π½ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… символов, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для Π²Π²ΠΎΠ΄Π° ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ заглядывал Ρ‡Π΅Ρ€Π΅Π· вашС ΠΏΠ»Π΅Ρ‡ΠΎ ΠΈ Ρ‡ΠΈΡ‚Π°Π» тСкст.

ΠœΡ‹ опишСм Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ самых ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°

GtkEntry
:

<b>GtkWidget* gtk_entry_new(void);</b>

<b>GtkWidget* gtk_entry_new_with_max_length(gint max);</b>

<b>void gtk_entry_set_max_length(GtkEntry *entry, gint max);</b>

<b>G_CONST_RETURN gchar* gtk_entry_get_text(GtkEntry *entry);</b>

<b>void gtk_entry_set_text(GtkEntry *entry, const gchar *text);</b>

<b>void gtk_entry_append_text(GtkEntry *entry, const gchar *text);</b>

<b>void gtk_entry_prepend_text(GtkEntry* entry, const gchar *text);</b>

<b>void gtk_entry_set_visibility(GtkEntry *entry, gboolean visible);</b>

<b>void gtk_entry_set_invisible_char(GtkEntry *entry, gchar invch);</b>

<b>void gtk_entry_set_editable(GtkEntry *entry, gboolean editable);</b>

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ

GtkEntry
с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
gtk_entry_new
ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ тСкста фиксированной Π΄Π»ΠΈΠ½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
gtk_entry_new_with_max_length
. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ тСкста избавляСт вас ΠΎΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности Π΄Π»ΠΈΠ½Ρ‹ Π²Π²ΠΎΠ΄Π° ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, нСобходимости ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ тСкст слишком Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ.

Для получСния содСрТимого Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°

GtkEntry
Π²Ρ‹Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
gtk_entry_get_text
, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ
const char
, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ
GtkEntry
(
G_CONST_RETURN
β€” макрос, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ GLib). Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ тСкст ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, слСдуСт ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
strcpy
.