ÕÒÂÛÎÄÍø > ¼ÆËã»úÂÛÎÄ > ¼ÆËã»úÓ¦Óà >

GTKͼÐαà³Ì(1)

¡¾ÕªÒª¡¿ ±¾ÎĽéÉÜÁËLinuxƽ̨ϵÄXwindowͼÐδ°¿Ú±à³Ì¹¤¾ßGTK£¬²¢¸ø³öÁËÓÃGTK±à³ÌµÄ»ù±¾ÒªËغͲ½Öè¡£

¡¾¹Ø¼ü´Ê¡¿GTK£¬»Øµ÷º¯Êý£¬ÏûÏ¢´¦ÀíÆ÷£¬µ÷½ÚÆ÷

GTK(GIMP Toolkit)ÊÇÒ»¸öͼÐÎÓû§±à³ÌµÄ½Ó¿Ú¹¤¾ß¡£Ëü×¢²áÍêÈ«Ãâ·Ñ£¬ËùÒÔÓÃÀ´¿ª·¢×ÔÓÉÈí¼þ»òÉÌÒµÈí¼þ¶¼²»ÐèÒª»¨·Ñʲô¡£ÏÖÔںܶàLinux¼¯³Éϵͳ¶¼ÒѾ­½«GTK1.2°æ±¾´ò°ü½øÈ¥ÁË¡£°üÀ¨RedHat Linux 6.0ÒÔÉϰ汾£¬»¹ÓÐÖÐÎÄ»¯µÄTurbo LinuxµÈµÈ¡£ËüÒ²Ô½À´Ô½±»ÆÕ±éµÄÓ¦ÓÃÓÚUNIXϵͳ±à³Ì¡£

»¹ÓÐÒ»¸ö×é¼þ½ÐGlib£¬Ëü°üº¬ÁËһЩ±ê×¼Ó¦ÓõÄÐÂÀ©Õ¹ÓÃÀ´Ìá¸ßGTKµÄ¼æÈÝÐÔ¡£ÓÃÓÚLinuxϵͳµÄijЩº¯Êý¿ÉÄܲ»Êʺϱê×¼µÄUNIXϵͳ£¬ÀýÈçg_strerror()º¯ÊýµÈµÈ¡£Ä³Ð©º¯ÊýÒ²À©Õ¹ÁËGNUCµÄÒ»°ã¹¦ÄÜ£¬ÀýÈçg_mallocº¯Êý¾ÍÓÐ×Ô¼º¼ÓÇ¿µÄµ÷ÊÔ¹¦ÄÜ¡£

GTK¿ÉÒÔÓë¶àÖÖÓïÑ԰󶨣¬°üÀ¨C++, Guile, Perl, Python, Ton, Ada95, Objective C, Free Pascal, Eiffel¡£Óñê×¼C¿ª·¢µÄ³ÌÐò£¬±àÒëÈí¼þ¿ÉÓÃGNU²¢¸½´øÉÏGTKÑ¡Ïî¼´¿É¡£ÏëÓóýÁ˱ê×¼CÒÔÍâµÄÆäËüÓïÑÔÀ´¿ª·¢XwindowͼÐÎÓû§³ÌÐò£¬ÔòÐèÒªÏȲο¼Ò»ÏÂÓйذó¶¨Èí¼þµÄÄÚÈÝ£¨HTTP:// www.gtk.org£©¡£ Èç¹ûÓÃC++ÓïÑÔÀ´µ÷ÓÃGTK½øÐпª·¢£¬¿ÉÒÔÓÃÒѾ­ºÍC++°ó¶¨µÄÈí¼þ½ÐGTK--Èí¼þ,À´Ìṩһ¸ö±ÈGTK¸üºÃµÄC++±àÒë»·¾³¡£

ĿǰÒѾ­¿ª·¢³öÀ´GTKµÄÔöÇ¿°æGTK+¡£GTK+Êǽ«GTK£¬GDK£¬GLIB¼¯³ÉÔÚÒ»ÆðµÄ¿ª·¢°ü£¬¿ÉÒÔ¹¤×÷ÔÚÐí¶àÀàËÆÓÚUNIXµÄϵͳÉÏ£¬Ã»ÓÐGTKµÄƽ̨ÏÞÖÆ¡£

1£®GTKµÄÏûÏ¢´¦Àí»úÖÆ

ÏÂÃæÎÒÃÇÏÈ¿´Ò»¸ö»ù±¾µÄÀý×Ó£¬¸ÃÀý×Ó²úÉúÒ»¸ö200¡Á200ÏñËØµÄ´°¿Ú¡£Ëü²»ÄÜ×Ô¼ºÍ˳ö£¬Ö»ÄÜͨ¹ýshellÀ´É±ËÀ½ø³Ì£¨µ÷ÓÃkillÃüÁ¡£

/*Àý×Ó base.c */

#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);

}

´ÓÉÏÃæµÄ³ÌÐò¿ÉÒÔ¿´³ö£¬GTKÊÇÒ»¸öʼþÇý¶¯¹¤¾ß°ü£¬µ±ËüÔËÐе½gtk_main()º¯Êýʱ»á×Ô¶¯Ë¯Ãߣ¬Ö±µ½ÓÐʼþ·¢Éú£¬¿ØÖÆÈ¨×ªÈøøÏàÓ¦µÄº¯Êýµ÷Óã¬Ôڸú¯ÊýÖпÉÒÔÓñê×¼Cд³öÏàÓ¦µÄÊÂÎïÂß¼­¡£ÕâÓëwindows ÉϵijÌÐò´¦ÀíÊÇÒ»ÑùµÄ¡£

¶Ô´°¿Ú¶ÔÏóÉÏ·¢ÉúµÄʼþ£¨Èç°´ÏÂÊó±ê£¬¼¤»î¼üÅ̵ȣ©£¬GTKÒ²ÓÐÏàÓ¦µÄÏûÏ¢ÐźŲúÉú¡£Õâʱ¾ÍÐèÒª³ÌÐòÔ±´´½¨Ò»¸öÐźŴ¦ÀíÆ÷À´²¶»ñ¸ÃÐźţ¬²¢¸æËßGTK³ÌÐòʼþ·¢Éúºóµ÷ÓÃÄĸö»Øµ÷º¯Êý¡£ÐźŴ¦ÀíÆ÷µÄ´´½¨º¯Êý¶¨ÒåÈçÏ£º

gint gtk_signal_connect( GtkObject *object, gchar *name,GtkSignalFunc callback_func, gpointer func_data );

·µ»ØÖµÊÇÒ»¸öÇø·Öͬһ¶ÔÏóÖеÄʼþÓ벻ͬ»Øµ÷º¯ÊýµÄ¹ØÁª±êÇ©¡£ÕâÑù¿ÉÒÔ×öµ½Ò»¸ö¶ÔÏóµÄÒ»¸öÐźžÍÓÐÈÎÒâ¶à¸ö»Øµ÷º¯Êý£¬²¢ÇÒÿһ¸ö¶¼»á°´ÕÕÉùÃ÷µÄ˳ÐòÖ´ÐС£º¯Êýµ÷ÓõĵÚÒ»¸ö²ÎÊýÊDzúÉúÐźŵÄwidget×é¼þ£¨¼´°´Å¥µÈ´°¿Ú¹¹¼þ£©£¬¶ønameÔòÊÇÏ£Íû²¶»ñµÄÐźŻòʼþµÄÃû³Æ£¬callback_funcÔòÊÇʼþ·¢ÉúºóËùµ÷ÓõĻص÷º¯ÊýÃû³Æ£¬¶øµÚËĸö²ÎÊýfunc_dataÔòÊÇ´«µÝ¸ø»Øµ÷º¯ÊýµÄ²ÎÊý¡£

»Øµ÷º¯ÊýÒª¶¨ÒåÔÚÖ÷³ÌÐòµÄÇ°Ãæ£¬ËüÃǵÄÒ»°ã¸ñʽ¶¼ÈçÏÂËùʾ£º

void callback_func( GtkWidget *widget, gpointer func_data );

µ÷ÓÃÏÂÃæÕâ¸ö·½·¨½«ÔÊÐíÄ㽫»Øµ÷º¯ÊýÓëʼþµÄ¹ØÁª¶Ï¿ª£º

void gtk_signal_disconnect( GtkObject *object, gint id );

¸Ãº¯ÊýµÄµÚ¶þ¸ö²ÎÊý¾ÍÊÇÉÏÊögtk_signal_connect£¨£©º¯ÊýµÄ·µ»ØÖµ£¬¼´¹ØÁª±êÇ©¡£µÚÒ»¸ö²ÎÊýÖ¸ÏòÁËÈ¥³ý¹ØÁªµÄ¶ÔÏóÃû³Æ¡£ÕâÑù¿ÉÒÔ×öµ½¶Ï¿ªÊ¼þÓë»Øµ÷º¯ÊýµÄ¹ØÁª£¬Ê¹µÃʼþ·¢Éúºó£¬²»»áµ÷ÓÃÏà¹ØµÄ»Øµ÷º¯Êý¡£

²¼¾Ö¸ñʽ

2.1´ò°üºÐ×Ó

¶ÔGTKÏÔʾ¸ñʽµÄ¿ØÖÆÊÇͨ³£Í¨¹ý´ò°üºÐ×ÓÀ´Íê³ÉµÄ¡£widget×é¼þ´ò°ü¿ÉÒÔ²ÉÓÃÁ½ÖÖ·½Ê½£¬Ë®Æ½ºÐ×Ӻʹ¹Ö±ºÐ×Ó¡£Èô½«widget×é¼þ´ò°ü½øÆ½ÐкÐ×Ó£¬×é¼þ¾Í±»ÒÀ´ÎˮƽµÄ²åÈë´°¿Ú£»ÈôÊÇ´¹Ö±ºÐ×Ó£¬Ôò×é¼þÅÅÁÐÊÇ´¹Ö±µÄ¡£²úÉúеÄˮƽºÐ×ӵĺ¯ÊýΪ

GtkWidget *gtk_hbox_new (gint homogeneous, gint spacing);

²ÎÊýhomogeneousÊÇÓÃÀ´¿ØÖÆÊÇ·ñºÐ×ÓÖеÄÿ¸ö×é¼þ¶¼ÓÐͬÑùµÄ´óС£¨ÀýÈçˮƽºÐ×ÓÖеĿؼþÓÐͬÑùµÄ¿í¶È£¬´¹Ö±ºÐ×ÓÖеĿؼþÓÐͬÑùµÄ¸ß¶È£©¡£Spacing²ÎÊýÊÇ×é¼þÖ®¼äµÄ¼ä¸ô¡£

´¹Ö±ºÐ×ӵĴ´½¨º¯ÊýÊÇgtk_vbox_new£¨£©£¬¶¨ÒåÓëˮƽºÐ×ÓÒ»Ö¡£

gtk_box_pack_start()ºÍgtk_box_pack_end()º¯ÊýÊÇÓÃÀ´½«´ò°ü¶ÔÏó·ÅÈëÕâЩºÐ×ÓÖеġ£

void gtk_box_pack_start( GtkBox *box, GtkWidget *child,gint expand, gint fill, gint padding );

µÚÒ»¸ö²ÎÊýÊÇÄ㽫×é¼þ´ò½øÈ¥µÄºÐ×ÓÖ¸Õ룬µÚ¶þ¸ö²ÎÊýÊÇÄ㽫Ҫ´ò½øÈ¥µÄ×é¼þÖ¸Õë¡£Expand²ÎÊýÊÇÓÃÀ´¿ØÖÆÊÇ·ñÔÊÐí×é¼þÀ©Õ¹ÖÁ·ÖÅ䏸ºÐ×Ó¿Õ¼äµÄ´óС£¨Ñ¡TRUE£©£¬»¹ÊǺÐ×ӵĴóСÊÕËõµ½×é¼þÄÇô´ó£¨Ñ¡FALSE£©¡£º¯ÊýÖеÄfill²ÎÊýÊÇÓÃÀ´¿ØÖÆÊÇ·ñ½«¶àÓàµÄ¿Õ¼ä·ÖÅ䏸×é¼þ£¬¼´½«×é¼þÀ©Õ¹µ½ºÐ×ӵĴóС£¨Ñ¡TRUE£©£¬»òÕß¶àÓàµÄ¿Õ¼ä²»±ä£¬±£Áô×÷ΪºÐ×Ӻʹò°ü×é¼þ¼äµÄ¼ä¸ô¡£¸Ã²ÎÊýÖ»ÓÐÔÚexpand²ÎÊýÈ¡TRUEʱ²ÅÓÐЧ¡£Padding²ÎÊýÊÇÖ¸×é¼þËÄÖÜÓëºÐ×ӵļä¸ô´óС¡£

×¢ÒâfillÈ¡FALSEÖµ£¬expandÈ¡TRUEֵʱÓëexpandÈ¡FALSEÖµ£¬fillÖµÎÞЧµÄÇø±ð¡£Ç°ÕߵĺÐ×ÓÈÔÊÇÔ­À´´´½¨ºÐ×Óʱָ¶¨µÄ´óС£¬¶øºóÕߵĺÐ×ÓÒѾ­ËõСµ½´ò°ü×é¼þµÄ´óСÁË¡£

gtk_box_pack_end()º¯ÊýµÄ²ÎÊýÓëÉÏÃæÃèÊöµÄÒ»Ö¡£Ö»ÊÇÅÅÁÐ˳Ðò·Ö±ðÊÇ´Óϵ½ÉÏ
£¬´ÓÓÒµ½×ó¡£

×îºó½«ËùÓеĺÐ×Ó»ò×é¼þ´ò°üµ½Ò»¸ö´óºÐ×ÓÖУ¬ÓÃgtk_container_add()º¯Êý½«ºÐ×Ó¼ÓÈë´°¿Ú¼´¿É¡£

¹²2Ò³: 1 [2] ÏÂÒ»Ò³


ÓÃBorland C++3.1ʵÏÖÍâÉèÓëWindowsÓ¦ÓóÌÐòʵʱͨÐÅ
¿ÉÒÆÖ²µÄ256ɫͼÐÎÓû§½çÃæµÄÉè¼Æ
¹¤É̹ÜÀí | ¹¤¿ÆÂÛÎÄ | ²ÆÎñ¹ÜÀí | ¹ÜÀíѧ | ¹«¹²¹ÜÀí | ²ÆÕþ˰ÊÕ | ֤ȯ½ðÈÚ | »á¼ÆÉó¼Æ | ¼ÆËã»ú | ·¨ÂÉÂÛÎÄ | ҽҩѧ | ººÓïÑÔÎÄѧ
Éç»áÂÛÎÄ | ¹¤¿ÆÂÛÎÄ | Àí¿ÆÂÛÎÄ | ÎÄ»¯ÂÛÎÄ | ÒÕÊõÂÛÎÄ | ÎÄѧÂÛÎÄ | ÕÜѧÂÛÎÄ | ÕþÖÎÂÛÎÄ | Ó¢ÓïÂÛÎÄ | д×÷Ö¸µ¼ | ¼ÆËã»úÓ¦ÓÃ
www.zlunwen.com ÕÒÂÛÎÄÍø ® °æÈ¨ËùÓÐ ÍøÕ¾µØÍ¼