|
![]() |
|
![]() Á×ÔÏÒ Özcan Güngör <ozcangungor(at)netscape.net> ï Á×ÔÏÒÅ: éÓÐÏÌØÚÕÀ Linux Ó 1997.ó×ÏÂÏÄÁ,ÇÉÂËÏÓÔØ É ÏÔËÒÙÔÏÓÔØ ËÏÄÁ. üÔÏ ÔÅ ËÁÞÅÓÔ×Á, ËÏÔÏÒÙÅ ÍÎÅ ÎÒÁ×ÑÔÓÑ. ðÅÒÅ×ÏÄ ÎÁ òÕÓÓËÉÊ: àÒÉÊ äÅÛËÏ <deshko_deshko(at)mail.ru> óÏÄÅÒÖÁÎÉÅ: |
ðÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÅ çÒÁÆÉÞÅÓËÏÇÏ ðÏÌØÚÏ×ÁÔÅÌØÓËÏÇÏ éÎÔÅÒÆÅÊÓÁ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ GTK.![]() òÅÚÀÍÅ:
÷ ÜÔÏÊ ÓÅÒÉÉ ÓÔÁÔÅÊ ÍÙ ÕÚÎÁÅÍ, ËÁË ÓÏÚÄÁ×ÁÔØ ÐÒÏÇÒÁÍÍÙ çðé Ó ÐÏÍÏÝØÀ GTK.ñ ÎÅ ÚÎÁÀ, ÎÁÓËÏÌØËÏ ÚÁÔÑÎÅÔÓÑ ÜÔÁ ÓÅÒÉÑ.þÔÏÂÙ ÐÏÎÑÔØ ÜÔÉ ÓÔÁÔØÉ ×ÁÍ ÎÅÏÂÈÏÄÉÍÙ ÓÌÅÄÕÀÝÉÅ ÚÎÁÎÉÑ Ï ÑÚÙËÅ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ C:
|
GTK(GIMP Toolkit) -- ÜÔÏ ÂÉÂÌÉÏÔÅËÁ ÄÌÑ ÓÏÚÄÁÎÉÑ çðé.âÉÂÌÉÏÔÅËÁ ÄÏÓÔÕÐÎÁ ÐÏÄ GPL ÌÉÃÅÎÚÉÅÊ.ðÏÌØÚÕÑÓØ ÜÔÏÊ ÂÉÂÌÉÏÔÅËÏÊ, ×Ù ÍÏÖÅÔÅ ÓÏÚÄÁ×ÁÔØ ÐÒÏÇÒÁÍÍÙ ËÁË ÏÔËÒÙÔÏÇÏ ÉÓÈÏÄÎÏÇÏ ËÏÄÁ, ÔÁË ËÏÍÍÅÒÞÅÓËÉÅ É Ó×ÏÂÏÄÎÙÅ.
âÉÂÌÉÏÔÅËÁ ÎÁÚÙ×ÁÅÔÓÑ GIMP toolkit (ÉÎÓÔÒÕÍÅÎÔÁÒÉÊ), ÔÁË ËÁË ÉÚÎÁÞÁÌØÎÏ ÂÙÌÁ ÓÏÚÄÁÎÁ ÄÌÑ ÒÁÚÒÁÂÏÔËÉ GIMP(General Image Manipulation Program - ïÓÎÏ×ÎÁÑ ðÒÏÇÒÁÍÍÁ ÄÌÑ íÁÎÉÐÕÌÉÒÏ×ÁÎÉÑ éÚÏÂÒÁÖÅÎÉÑÍÉ).á×ÔÏÒÙ GTK, ×ÏÔ ÏÎÉ:
GTK ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÏÂßÅËÔÎÏ-ÏÒÉÅÎÔÉÒÏ×ÁÎÎÙÊ ÉÎÔÅÒÆÅÊÓ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÈ ÐÒÉÌÏÖÅÎÉÊ.îÁÐÉÓÁÎÎÁÑ ÎÁ C , ÏÎÁ ÉÓÐÏÌØÚÕÅÔ ÉÄÅÀ ËÌÁÓÓÏ× É ÆÕÎËÃÉÊ ÏÂÒÁÔÎÏÇÏ ×ÙÚÏ×Á.
äÌÑ ÔÏÇÏ ÞÔÏÂÙ ÓËÏÍÐÉÌÉÒÏ×ÁÔØ GTK ÐÒÏÇÒÁÍÍÕ , ×ÁÍ ÎÕÖÎÏ ÓÏÏÂÝÉÔØ gcc Ï ÉÓÐÏÌØÚÏ×ÁÎÉÉ GTK ÂÉÂÌÉÏÔÅË É Ï ÉÈ ÒÁÓÐÏÌÏÖÅÎÉÉ.÷ÓÅ ÜÔÏ "ÚÎÁÅÔ" ËÏÍÁÎÄÁ gtk-config
# gtk-config --cflags --libs÷Ù×ÏÄ ÜÔÏÊ ËÏÍÁÎÄÙ ÐÏÈÏÖ ÎÁ ÓÌÅÄÕÀÝÅÅ(ÚÁ×ÉÓÉÔ ÏÔ ÓÉÓÔÅÍÙ):
-I/opt/gnome/include/gtk-1.2 -I/opt/gnome/include/glib-1.2 -I/opt/gnome/lib/glib /include -I/usr/X11R6/include -L/opt/gnome/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -l Xext -lX11 -lmïÂßÑÓÎÅÎÉÑ ÜÔÉÍ ÐÁÒÁÍÅÔÒÁÍ:
-l ÂÉÂÌÉÏÔÅËÁ: ðÏÉÓË ÂÉÂÌÉÏÔÅËÉ × ×ÉÄÅ libÂÉÂÌÉÏÔÅËÁ.a × ÐÒÅÄÏÐÒÅÄÅÌÅÎÎÙÈ ËÁÔÁÌÏÇÁÈ(path-ÐÕÔÑÈ).äÌÑ ËÏÍÐÉÌÑÃÉÉ GTK ÐÒÏÇÒÁÍÍÙ ÎÁÚÙ×ÁÅÍÏÊ hello.c ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÌÅÄÕÀÝÉÅ ËÏÍÁÎÄÙ:
gcc -o hello hello.c `gtk-config --cflags --libs`
äÁÎÎÙÅ ÐÏÓÌÅ ÐÁÒÁÍÅÔÒÁ -o --ÜÔÏ ÉÍÑ ËÏÍÐÉÌÉÒÕÅÍÏÊ ÐÒÏÇÒÁÍÍÙ.
ðÒÅÄÐÏÌÁÇÁÅÔÓÑ, ÞÔÏ × ×ÁÛÅÊ ÓÉÓÔÅÍÅ ÕÓÔÁÎÏ×ÌÅÎ GTK.ðÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ GTK ÍÏÖÅÔ ÂÙÔØ ÎÁÊÄÅÎÁ ÎÁ ftp.gtk.org.
äÁ×ÁÊÔÅ ÎÁÐÉÛÅÍ ÎÁÛÕ ÐÅÒ×ÕÀ ÐÒÏÇÒÁÍÍÕ.ïÎÁ ÓÏÚÄÁÅÔ ÐÕÓÔÏÅ ÏËÎÏ ÒÁÚÍÅÒÏÍ 200 ÎÁ 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_widget_show (window); gtk_main (); return(0); }
GtkWidget - ÔÉÐ ÐÅÒÅÍÅÎÎÏÊ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÒÁÚÌÉÞÎÙÈ ËÏÍÐÏÎÅÎÔÏ× ÔÁËÉÈ ËÁË ÏËÎÏ,ËÎÏÐËÉ,ÍÅÔËÉ...÷ ÜÔÏÍ ÐÒÉÍÅÒÅ ÏËÎÏ ÏÐÒÅÄÅÌÅÎÏ ÓÌÅÄÕÀÝÉÍ ÏÂÒÁÚÏÍ:
GtkWidget *window;void gtk_init(int *argc,char ***argv) ÉÎÉÃÉÁÌÉÚÉÒÕÅÔ ÉÎÓÔÒÕÍÅÎÔÁÒÉÊ É ÐÒÉÎÉÍÁÅÔ ÐÁÒÁÍÅÔÒÙ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ.üÔÁ ÆÕÎËÃÉÑ ÄÏÌÖÎÁ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ ÐÏÓÌÅ ÏÐÒÅÄÅÌÅÎÉÑ ËÏÍÐÏÎÅÎÔ.
GtkWidget *gtk_window_new(GtkWindowType windowtype) ÓÏÚÄÁÅÔ ÎÏ×ÏÅ ÏËÎÏ.ïËÎÏ ÍÏÖÅÔ ÂÙÔØ:
void gtk_widget_show(GtkWidget *widget) ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÔÏÇÏ ,ÞÔÏÂÙ ÚÁÓÔÁ×ÉÔØ ËÏÍÐÏÎÅÎÔ ÐÏÑ×ÉÔØÓÑ × ÏËÎÅ.æÕÎËÉÑ ÄÏÌÖÎÁ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÐÏÓÌÅ ÏÐÒÅÄÅÌÅÎÉÑ ËÏÍÐÏÎÅÎÔÁ É ÉÚÍÅÎÅÎÉÑ ÅÇÏ ÁÔÔÒÉÂÕÔÏ×.
void gtk_main(void) ÐÏÄÇÏÔÁ×ÌÉ×ÁÅÔ ÏËÎÁ É ×ÓÅ ËÏÍÐÏÎÅÎÔÙ Ë ÐÏÑ×ÌÅÎÉÀ ÎÁ ÜËÒÁÎÅ.æÕÎËÃÉÑ ÄÏÌÖÎÁ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ × ËÏÎÃÅ GTK ÐÒÏÇÒÁÍÍÙ.
äÁ×ÁÊÔÅ ÉÓÐÏÌØÚÕÅÍ ÎÅËÏÔÏÒÙÅ Ó×ÏÊÓÔ×Á ÏËÎÁ ÔÁËÉÅ ËÁË ÚÁÇÏÌÏ×ËÉ,ÒÁÚÍÅÒ,ÐÏÚÉÃÉÑ...
void gtk_window_set_title(GtkWindow *window,const gchar *title) ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÉÌÉ ÉÚÍÅÎÅÎÉÑ ÚÁÇÏÌÏ×ËÁ ÏËÎÁ window.ðÅÒ×ÙÊ ÐÁÒÁÍÅÔÒ ÜÔÏÊ ÆÕÎËÃÉÉ ÉÍÅÅÔ ÔÉÐ GtkWindow.îÏ ÐÅÒÅÍÅÎÎÁÑwindow ÉÍÅÅÔ ÔÉÐ GtkWidget . ðÒÉ ËÏÍÐÉÌÑÃÉÉ ÍÙ ÂÕÄÅÍ ÐÒÅÄÕÐÒÅÖÄÅÎÙ Ï ÜÔÏÍ.èÏÔÑ ÓËÏÍÐÉÌÉÒÏ×ÁÎÎÁÑ ÐÒÏÇÒÁÍÍÁ É ÒÁÂÏÔÁÅÔ , ÌÕÞÛÅ ÅÅ ÐÏÄËÏÒÒÅËÔÉÒÏ×ÁÔØ. äÌÑ ÜÔÏÇÏ ÉÓÐÏÌØÚÕÅÔÓÑ GTK_WINDOW(GtkWidget *widget). ÷ÔÏÒÏÊ ÐÁÒÁÍÅÔÒ title ÉÍÅÅÔ ÔÉÐ gchar. ôÉÐ gchar ÏÐÒÅÄÅÌÅÎ × ÂÉÂÌÉÏÔÅËÅ glib É Ñ×ÌÑÅÔÓÑ ÔÁËÉÍ ÖÅ ÓÁÍÙÍ ËÁË É ÔÉÐ char.
void gtk_window_set_default_size(GtkWindow *window, gint width, gint height) ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÒÁÚÍÅÒ window. .ëÁË É gchar , gint ÏÐÒÅÄÅÌÅÎ × glib} É ÜË×É×ÁÌÅÎÔÅÎ int.
æÕÎËÃÉÑvoid gtk_window_set_position(GtkWindow *window, GtkWindowPosition position)
ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÐÏÌÏÖÅÎÉÅ window.position ÍÏÖÅÔ ÂÙÔØ:÷ÏÔ ÐÒÉÍÅÒ:
#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),"Ýlk Program"); gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(window),300,300); gtk_widget_show (window); gtk_main (); return(0); }
÷ çðé, ×ÁÍ ÎÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÍÙÛØ É ËÌÁ×ÉÁÔÕÒÕ, ÎÁÐÒÉÍÅÒ ×Ù ÍÏÖÅÔÅ ÎÁÖÉÍÁÔØ ÎÁ ËÎÏÐËÕ ÐÒÉÌÏÖÅÎÉÑ.äÌÑ ÜÔÏÇÏ ÉÓÐÏÌØÚÕÀÓÑ GTK ÆÕÎËÃÉÉ:
guint gtk_signal_connect_object(GtkObject *object,const gchar *name,GtkSignalFu nc func,GtkObject *slot_object);
object - ÜÔÏ ËÏÍÐÏÎÅÔ, ËÏÔÏÒÙÊ ÉÓÐÕÓËÁÅÔ ÓÉÇÎÁÌ.îÁÐÒÉÍÅÒ, ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ÕÚÎÁÔØ ÂÙÌÁ ÌÉ ÎÁÖÁÔÁ ËÎÏÐËÁ, ÔÏ object ÂÕÄÅÔ ËÎÏÐËÏÊ. name-ÜÔÏ ÉÍÑ ÓÏÂÙÔÉÑ É ÍÏÖÅÔ ÂÙÔØ ÓÌÅÄÕÀÝÉÍ:
func - ÜÔÏ ÉÍÑ ÆÕÎËÃÉÉ , ËÏÔÏÒÁÑ ÂÕÄÅÔ ×ÙÚ×ÁÎÁ ËÏÇÄÁ ÐÒÏÉÚÏÊÄÅÔ ÓÏÂÙÔÉÅ.îÁÐÒÉÍÅÒ:
#include <gtk/gtk.h> void close( GtkWidget *widget,gpointer *data) { gtk_main_quit(); } int main( int argc,char *argv[] ) { GtkWidget *window; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (close), NULL); gtk_widget_show (window); gtk_main (); return(0); }æÕÎËÃÉÉÑ
gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (close), NULL)
ÓÌÅÄÉÔ ÚÁ ÓÏÂÙÔÉÅÍ destroy, ÐÒÏÉÓÈÏÄÑÝÉÍ Ó ÏËÎÏÍ.ëÏÇÄÁ ÏËÎÏ ÐÙÔÁÀÔÓÑ ÚÁËÒÙÔØ , ÔÏ ×ÙÚÙ×ÁÅÔÓÑ ÆÕÎËÃÉÑ close.æÕÎËÃÉÑ close ×ÙÚÙ×ÁÅÔ gtk_main_quit() É ÐÒÏÇÒÁÍÍÁ ÐÒÅËÒÁÝÁÅÔ ×ÙÐÏÌÎÅÎÉÅ.äÅÔÁÌÉ Ï ÓÉÇÎÁÌÁÈ É ÓÏÂÙÔÉÑÈ ÂÕÄÕÔ ÏÂßÑÓÎÅÎÙ ÐÏÚÖÅ...
ïÂÙÞÎÙÅ ËÎÏÐËÉ ËÁË ÐÒÁ×ÉÌÏ ÉÓÐÏÌØÚÕÀÔÓÑ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ÞÅÇÏ ÎÉÂÕÄØ ÐÒÉ ÉÈ ÎÁÖÁÔÉÉ.÷ GTK ÂÉÂÌÉÏÔÅËÅ ÓÕÝÅÓÔ×ÕÀÔ Ä×Á ÐÕÔÉ ÓÏÚÄÁÎÉÑ ËÎÏÐÏË:
ðÅÒ×ÁÑ ÆÕÎËÃÉÑ ÓÏÚÄÁÅÔ ËÎÏÐËÕ ÂÅÚ ÍÅÔËÉ (ÎÁ ÎÅÊ ÎÉÞÅÇÏ ÎÅ ÎÁÐÉÓÁÎÏ ).÷ÔÏÒÏÊ ÓÏÚÄÁÅÔ ËÎÏÐËÕ Ó ÍÅÔËÏÊ(ÎÁ ÎÅÊ ÎÁÐÉÓÁÎÁ ÓÔÒÏËÁ label .
ôÕÔ ÍÙ ÉÓÐÏÌØÚÕÅÍ ÎÏ×ÕÀ ÆÕÎËÃÉÀ:
void gtk_container_add(GtkContainer *container,GtkWidget *widget)
éÓÐÏÌØÚÕÑ ÜÔÕ ÆÕÎËÃÉÀ,ÍÏÖÎÏ ÓÏÚÄÁÔØ ËÎÏÐËÕ (× ÏÂÝÅÍ ÔÏ ÌÀÂÏÊ ËÏÍÐÏÎÅÎÔ ) × ÏËÎÅ ( ÉÌÉ ÌÀÂÏÍ ËÏÎÔÅÊÎÅÒÅ). ÷ ÓÌÅÄÕÀÝÅÍ ÐÒÉÍÅÒÅ ËÏÎÔÅÊÎÅÒÏÍ Ñ×ÌÑÅÔÓÑ ÏËÎÏ Á ÄÏÂÁ×ÌÑÅÍÙÍ ËÏÍÐÏÎÅÎÔÏÍ - ËÎÏÐËÁ.ï ÄÒÕÇÉÈ ËÏÎÔÅÊÎÅÒÁÈ ÍÙ ÕÚÎÁÅÍ ÎÅÍÎÏÇÏ ÐÏÚÖÅ.
çÌÁ×ÎÏÅ , ÞÔÏ ÎÕÖÎÏ ÚÎÁÔØ Ï ËÎÏÐËÅ ÜÔÏ ÂÙÌÁ ÌÉ ÏÎÁ ÎÁÖÁÔÁ .äÌÑ ÜÔÏÊ ÃÅÌÉ ÏÐÑÔØ ÖÅ ÂÙÌÁ ÉÓÐÏÌØÚÏ×ÁÎÁ ÆÕÎËÃÉÑ gtk_signal_connect.ó ÐÏÍÏÝØÀ ÜÔÏÊ ÆÕÎËÃÉÉ ÂÕÄÅÔ ×ÙÚ×ÁÎÁ ÄÒÕÇÁÑ É ÔÁËÉÍ ÏÂÒÁÚÏÍ ÒÅÁÌÉÚÏ×ÁÎÁ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔØ ËÎÏÐËÉ.îÁÐÒÉÍÅÒ:
#include <gtk/gtk.h> void close( GtkWidget *widget,gpointer *data) { gtk_main_quit(); } void clicked(GtkWidget *widget,gpointer *data) { g_print("Button Clicked\n"); } int main( int argc,char *argv[] ) { GtkWidget *window,*button; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (close), NULL); button=gtk_button_new_with_label("Button"); gtk_container_add(GTK_CONTAINER(window),button); gtk_signal_connect(GTK_OBJECT(button),"clicked", GTK_SIGNAL_FUNC(clicked),NULL); gtk_widget_show(button); gtk_widget_show(window); gtk_main (); return(0); }
|
Webpages maintained by the LinuxFocus Editor team
© Özcan Güngör, FDL LinuxFocus.org |
Translation information:
|
2003-08-06, generated by lfparser version 2.42