当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 怎么运行GTK程序呢.?
帖子发表于 : 2010-05-18 9:47 

注册: 2010-05-05 21:58
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
我最近在学习GTK编程,然后下了一个GTK2.0的教程,但是,看到某个程序就过不去了.

程序是这样的....
代码:
#include <stdlib.h>
#include <stdio.h>
#include "gtk/gtk.h"

gint delete_event (GtkWidget *widget,GdkEvent *event,gpointer data)
{
    gtk_main_quit();
    return FALSE;
}

GtkWidget *make_box(gboolean homogeneous,
        gint spacing,gboolean expand,gboolean fill,guint padding)
{
    GtkWidget *box;
    GtkWidget *button;
    char padstr[80];

    box = gtk_hbox_new (homogeneous ,spacing);

    button = gtk_button_new_with_label ("Gtk_box_pack");
    gtk_box_pack_start (GTK_BOX(box),button,expand,fill,padding);
    gtk_widget_show(button);

    button = gtk_button_new_with_label ("box,");
    gtk_box_pack_start (GTK_BOX(box),button,expand,fill,padding);
    gtk_widget_show(button);

    if (expand == TRUE)
        button = gtk_button_new_with_label ("TRUE");
    else
        button = gtk_button_new_with_label ("FALSE");

    gtk_box_pack_start (GTK_BOX(box),button,expand,fill,padding);
    gtk_widget_show(button);


    button = gtk_button_new_with_label (fill?"TRUE":"FALSE");
    gtk_box_pack_start (GTK_BOX(box),button,expand,fill,padding);
    gtk_widget_show(button);

    sprintf(padstr,"%d);",padding);

    button = gtk_button_new_with_label (padstr);
    gtk_box_pack_start (GTK_BOX(box),button,expand,fill,padding);
    gtk_widget_show(button);

    return box;
}


int main (int argc,char *argv[])
{
    GtkWidget *window;
    GtkWidget *button;
    GtkWidget *box1;
    GtkWidget *box2;
    GtkWidget *separator;
    GtkWidget *label;
    GtkWidget *quitbox;
    int which;

    gtk_init (&argc,&argv);

    if (argc != 2)
    {
        fprintf(stderr,"usage: packbox num,where num is 1,2 or 3.\n");
        exit (1);
    }

    which = atoi (argv[1]);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

    g_signal_connect (G_OBJECT(window),"delete_event",G_CALLBACK(delete_event),NULL);

    gtk_container_set_border_width (GTK_CONTAINER(window),10);

    box1 = gtk_vbox_new(FALSE,0);

    switch(which)
    {
        case 1:
            label = gtk_label_new("gtk_hbox_new (FALSE,0)");

            gtk_misc_set_alignment(GTK_MISC(label),0,0);
            gtk_box_pack_start (GTK_BOX(box1),label,FALSE,FALSE,0);

            gtk_widget_show(label);

            box2 = make_box(TRUE,0,TRUE,FALSE,0);
            gtk_box_pack_start (GTK_BOX(box1),box2,FALSE,FALSE,0);
            gtk_widget_show(box2);

            separator = gtk_hseparator_new ();
            gtk_box_pack_start (GTK_BOX(box1),separator,FALSE,TRUE,5);
            gtk_widget_show(separator);

            break;
        case 2:

            label = gtk_label_new ("gtk_hbox_new(FALSE,10)");
            gtk_misc_set_alignment (GTK_MISC(label),0,0);
            gtk_box_pack_start (GTK_BOX(box1),label,FALSE,FALSE,0);
            gtk_widget_show(label);
            box2 = make_box(FALSE,10,TRUE,TRUE,0);
            gtk_box_pack_start (GTK_BOX(box1),box2,FALSE,FALSE,0);
            gtk_widget_show(box2);

            separator = gtk_hseparator_new ();
            gtk_box_pack_start(GTK_BOX(box1),separator,FALSE,TRUE,5);
            gtk_widget_show(separator);


            label = gtk_label_new("gtk_hbox_new(FALSE,0)");
            gtk_misc_set_alignment(GTK_MISC(label),0,0);
            gtk_box_pack_start(GTK_BOX(box1),label,FALSE,FALSE,0);
            gtk_widget_show(label);

            box2 = make_box(FALSE,0,TRUE,FALSE,10);
            gtk_box_pack_start (GTK_BOX(box1),box2,FALSE,FALSE,0);
            gtk_widget_show(box2);

            box2 = make_box(FALSE,0,TRUE,TRUE,10);
            gtk_box_pack_start (GTK_BOX(box1),box2,FALSE,FALSE,0);
            gtk_widget_show(box2);

            separator = gtk_hseparator_new();
            gtk_box_pack_start (GTK_BOX(box1),separator,FALSE,TRUE,5);
            gtk_widget_show(separator);
            break;

        case 3:
            box2 = make_box (FALSE,0,FALSE,FALSE,0);

            label = gtk_label_new("end");
            gtk_box_pack_end (GTK_BOX(box2),label,FALSE,FALSE,0);
            gtk_widget_show(label);

            gtk_box_pack_start(GTK_BOX(box1),box2,FALSE,FALSE,0);
            gtk_widget_show(box2);

            separator = gtk_hseparator_new();

            gtk_widget_set_size_request (separator,400,5);
            gtk_box_pack_start (GTK_BOX(box1),separator,FALSE,TRUE,5);
            gtk_widget_show(separator);
    }

    quitbox = gtk_hbox_new(FALSE,0);

    button = gtk_button_new_with_label ("Quit");

    g_signal_connect_swapped (G_OBJECT(button),"clicked",G_CALLBACK(gtk_main_quit),window);
    gtk_box_pack_start (GTK_BOX(quitbox),button,TRUE,FALSE,0);
    gtk_box_pack_start (GTK_BOX(box1),quitbox,FALSE,FALSE,0);
    gtk_container_add (GTK_CONTAINER(window),box1);

    gtk_widget_show(button);
    gtk_widget_show (quitbox);
    gtk_widget_show(box1);
    gtk_widget_show(window);
   
    gtk_main();

    return 0;


}


编译成功了以后我不知道怎么运行了..?有哪位大牛可以指导下么..?谢谢了...


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 怎么运行GTK程序呢.?
帖子发表于 : 2010-05-18 9:57 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
千年都成精了嘛。
chmod +x xxxx
./xxxx


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 怎么运行GTK程序呢.?
帖子发表于 : 2010-05-18 13:24 

注册: 2010-05-05 21:58
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
呵呵...变不成妖...

我的意思是..像在windows下,可以用cmd运行程序,并且可以在后面增加选项..比如 x.exe xxxx xxxx之类的,然后程序就会读取xxxx了..linux下要怎么操作呢..?新人..不了解...

能说清楚点么..?谢谢了...


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 怎么运行GTK程序呢.?
帖子发表于 : 2010-05-18 19:00 
头像

注册: 2007-12-08 9:05
帖子: 63
送出感谢: 0 次
接收感谢: 1
千年尘封 写道:
呵呵...变不成妖...

我的意思是..像在windows下,可以用cmd运行程序,并且可以在后面增加选项..比如 x.exe xxxx xxxx之类的,然后程序就会读取xxxx了..linux下要怎么操作呢..?新人..不了解...

能说清楚点么..?谢谢了...

./x xxxx xxxx


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译