|
|
This document is available in: English Castellano ChineseGB Deutsch Francais Italiano Nederlands Russian Turkce Polish |
by Özcan Güngör <ozcangungor(at)netscape.net> ��������: �Ҵ�1997�꿪ʼʹ��Linux.������,�����ҿ���Դ��,��Щ��������ϲ����. Ŀ¼: |
��GTK��дGUI����ժҪ:
���������ϵ����,���ǽ�Ҫѧϰ����ʹ��GTK��дͼ���û�����.���Լ�Ҳ��֪������д�೤.Ϊ��������Щ����,�����Ҫ������µ�C����֪ʶ
|
GTK(GIMP Toolkit,GIMP���߰�)������ͼ���û����濪����ͼ�ο�.������GPL��GNU��������Ð�飩�������ʹ��GTK������Դ��,��ѵ�,��������ҵ�ij���.
֮���Գ���ΪGIMP���߰�(GTK)������ΪGTK����ʱ�����Ŀ����Ϊ�˿���GIMP����(ͨ��ͼ��������).GTK��������:
GTK���������(object-oriented)�ij����û��ӿ�.��Ȼ����C����д�ɵ�,������ʹ������(classes)�ͻص�����(callback function)��˼��.
����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 library: ��Ԥ����·�����ҿ���Ϊliblibrary.a�Ŀ�.Ҫ����һ����Ϊhello.c�ij���,����ʹ�����µ�����:
gcc -o hello hello.c `gtk-config --cflags --libs`
����-o����������DZ���Ľ���ļ�������.
���Ǽ������Ѿ������ϵͳ�ﰲװ��GTK.���Դ�ftp.gtk.org�ĵ�GTK�����°汾.
������д�µ�һ������,������򴴽�һ��200x200���ش�Ŀմ���.
#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�����������񴰿�(window),��ť(button),��ǩ(label)�ȵ������һ����������, �����������,��������������һ������.:
GtkWidget *window;void gtk_init(int *argc,char ***argv) ��ʼ�����߰����һ�ȡ�����в���.��������������������֮��ʹ��
GtkWidget *gtk_window_new(GtkWindowType windowtype) ����һ���µĴ���,�������ͣ�windowtype)������:
void gtk_widget_show(GtkWidget *widget) ������ʾ�����е����.�ڴ�����һ�������ı���������Ե������,����������ͱ���Ҫ�õ�.
void gtk_main(void) ׼�������ں����е������ʾ����Ļ��,�������������GTK�����������.
��������ʹ��һЩ���ڵ�����,�������(titles),�ߴ�(size),λ��(position)...
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�ijߴ�.��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); }
��ͼ���û������У�����Ҫ�õ����ͼ��̡�����˵������԰���һ����ť��Ϊ�ˣ��ǣԣ��ṩ�����µĺ���:
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)
��������window��destroy�¼��������ڹر�ʱ�� close �ͻᱻ����.�� close �����ֵ��� gtk_main_quit() ������������.�����¼����źŵ�ϸ�ڽ����Ժ���ܣ�����
��ͨ��ťһ�������ڽ�������ʱ�ó������ض������飮��GTK���У����������ַ�ʽ����һ����ť:
��һ����������һ��û�б�ǩ�İ�ť�����治��ʾ�κζ��������ڶ�����������һ������ǩ�ĺ��� (�ַ���label����ʾ������).
����������ǽ�ʹ��һ���µĺ���:
void gtk_container_add(GtkContainer *container,GtkWidget *widget)
ʹ������������Դ����ڴ��ڣ�һ��ģ��������κ�����������ʾ�İ�ť��Ҳ�������κ������������.�ڽ������������У�������һ�����ڣ������ӵ������е�����ǰ�ť�����ǽ����Ժ�ѧϰ������һЩ������
������ͨ��ť����Ҫ�������������Ҫ֪�����Ƿ��Ѿ�������.��������һ��ʹ��gtk_signal_connect ������ʵ�����Ŀ��.ʹ��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); }
|
��ҳ��LinuxFocus�à¼ï¿½ï¿½Î¬ï¿½ï¿½
© Özcan Güngör, FDL LinuxFocus.org |
������Ϣ:
|
2004-03-18, generated by lfparser version 2.46