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

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

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

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

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ создаСтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

GtkWindow
ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΡƒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ°
GtkContainer
, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΡƒΡŽ, ΠΊΠ°ΠΊ
gtk_container_add
:

<b>void gtk_container_add(GtkContainer* container, GtkWidget *widget);</b>

Π’Ρ‹ примСняСтС макрос

GTK_CONTAINER
для привСдСния Ρ‚ΠΈΠΏΠΎΠ²
GtkWidget
ΠΈ
GtkContainer
:

GtkWidget * window = gtk_window_new(GTK GTK_WINDOW_TOPLEVEL);

gtk_container_add(GTK_CONTAINER(window), awidget);

НазначСниС этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ·ΠΆΠ΅; сСйчас просто ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ для сСбя частоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ макросов. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ привСдСния Ρ‚ΠΈΠΏΠ° сущСствуСт макрос.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

НС Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ, Ссли Π²Π°ΠΌ всС это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ понятно; Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² подробностях ООП для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ GNOME/GTK+. На самом Π΄Π΅Π»Π΅ это Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹ΠΉ способ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ ΠΈ прСимущСства ООП Π½Π° Π±Π°Π·Π΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ Π²Π°ΠΌ языка Π‘.

Знакомство с GNOME

GNOME β€” имя, Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Π½Π°Ρ‡Π°Ρ‚ΠΎΠΌΡƒ Π² 1997 Π³. программистами, Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΌΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ GNU Image Manipulation Program (GIMP) Π½Π°Π΄ созданиСм ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола для Linux. ВсС Π±Ρ‹Π»ΠΈ согласны с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ ОБ Linux ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола тормозился отсутствиСм согласованной стратСгии. Π’ Ρ‚ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол Linux Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π» Π”ΠΈΠΊΠΈΠΉ Π—Π°ΠΏΠ°Π΄ Π±Π΅Π· ΠΎΠ±Ρ‰ΠΈΡ… стандартов ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ², ΠΈ программисты ΠΌΠΎΠ³Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ вздумаСтся. Π‘Π΅Π· сводной Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ мСню Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола, согласованноС прСдставлСниС ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ ΠΈ Ρ‚.Π΄., освоСниС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠΌ Π±Ρ‹Π»ΠΎ Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, Π° Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ β€” Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌ.

Π“Ρ€ΡƒΠΏΠΏΠ° GNOME Π½Π°ΠΌΠ΅Ρ€Π΅Π²Π°Π»Π°ΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол для ОБ Linux с Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPL, разрабатывая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ настройки Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ согласованном стилС, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ способствуя Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ стандартов для взаимодСйствия ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ, управлСния сСансами ΠΈ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ GUI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈΡ… стараний ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹: срСда GNOME β€” основа стандартного Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола Linux Π² дистрибутивах Fedora, Red Hat, Ubuntu, openSUSE ΠΈ Π΄Ρ€. (рис. 16.1).

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ GNOME ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ GNU Network Object Model Environment (срСда сСтСвых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ GNU), Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ€Π°Π½Π΅Π΅ поставлСнных Π·Π°Π΄Π°Ρ‡, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π² систСму Linux ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ систСмы, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Microsoft OLE, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ тСкстового процСссора. Π’Π΅ΠΏΠ΅Ρ€ΡŒ поставлСны Π½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сСгодня Π½Π°ΠΌ извСстно ΠΊΠ°ΠΊ GNOME, β€” это закончСнная срСда Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола, содСрТащая панСль для запуска ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ программирования ΠΈ срСдства ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, слСдуСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ установлСны.

ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Linux - image051.jpg

Рис. 16.1 

Установка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ GNOME/GTK+

ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол GNOME со своими стандартными прилоТСниями ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ GNOME/GTK+ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π±ΠΎΠ»Π΅Π΅ 60 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², поэтому установка GNOME с нуля Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΈΠ· исходного ΠΊΠΎΠ΄Π° β€” ΡƒΡΡ‚Ρ€Π°ΡˆΠ°ΡŽΡ‰Π°Ρ пСрспСктива. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π² соврСмСнных дистрибутивах Linux Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ установку GNOME/GTK+ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² пустяковоС Π΄Π΅Π»ΠΎ.

Π’ дистрибутивах Linux Red Hat ΠΈ Fedora Π²Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ срСдство Package Management (Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ), Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² ΠΌΡ‹ΡˆΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ мСню Applications (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) ΠΈ Π²Ρ‹Π±Ρ€Π°Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Add/Remove Software (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ/ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹). Когда появится Package Management (рис. 16.2), ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ установлСн Ρ„Π»Π°ΠΆΠΎΠΊ GNOME Software Development (Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ GNOME). ЗаглянитС Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Development (Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°) для этого установочного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π’ этой Π³Π»Π°Π²Π΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с GNOME/GTK+ 2, поэтому ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ установлСны Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ вСрсии 2.x.Рис. 16.2Β 

ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Linux - image052.jpg

Π’ случаС дистрибутивов, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… RPM-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ установлСны ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ RPM-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹:

β–‘Β gtk2-2.10.11-7.fc7.rpm;

β–‘Β gtk2-devel-2.10.11-7.fc7.rpm;

β–‘Β gtk2-engines-2.10.0-3.fc7.rpm;

β–‘Β libgnome-2.18.0-4.fc7.rpm;

β–‘Β libgnomeui-2.18.l-2.fc7.rpm;

β–‘Β libgnome-devel-2.18.0-4.fc7.rpm;

β–‘Β libgnomeui-devel-2.18.1-2.fc7.rpm.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ комбинация символов fc7 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° дистрибутив Linux Fedora 7. Π’ вашСй систСмС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ слСгка ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π°.

Π’ дистрибутивС Debian ΠΈ основанных Π½Π° Debian систСмах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ubuntu, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ apt-get для установки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² GNOME/GTK+ с Ρ€Π°Π·Π½Ρ‹Ρ… сайтов-Π·Π΅Ρ€ΠΊΠ°Π» (mirrors). Для выяснСния подробностСй слСдуйтС ΠΏΠΎ ссылкам Web-сайта http://www.gnome.org.

ΠžΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ дСмонстрационноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GTK+, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ всС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΈ ΠΈΡ… ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ (рис. 16.3).

$ <b>gtk-demo</b>

ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Linux - image053.jpg

Рис. 16.3 

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Info (Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ) ΠΈ Source (Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄). На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Source (Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄) ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° языкС Π‘ для примСнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°. На Π½Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСно мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.1.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 16.1. ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ

GtkWindow

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ срСдствами GTK+ с ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ GUI β€” отобраТСния ΠΎΠΊΠ½Π°. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GTK+ Π² дСйствии ΠΈ большой Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΈΠ· ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

1.Β Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π΅ gtk1.с:

#include &lt;gtk/gtk.h&gt;

int main(int argc, char *argv[]) {

Β GtkWidget *window;

Β gtk_init(&amp;argc, &amp;argv);

Β window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

Β gtk_widget_show(window);

Β gtk_main();

Β return 0;

}

2. Для компиляции gtk1.c Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ <b>gcc gtk1.c -ΠΎ gtk1 `pkg-config --cflags --libs gtk+-2.0`</b>

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΈ Π½Π°Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ апострофы, Π° Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ апострофы β€” ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ апострофы β€” это инструкции, Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Π² Π½ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΊΠΎΠ½Π΅Ρ† строки.

Когда Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, вашС ΠΎΠΊΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ (рис. 16.4).

$ <b>./gtk1</b>

ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Linux - image054.jpg