www.pudn.com > linux_multi_thread.rar > 1.c


#include 
    int  sell=0;
    GtkWidget *window;
    GtkWidget *align;
    GtkWidget *separator;
    GtkWidget *button;
    GtkWidget *vbox;
    GtkWidget *timer;
    GtkWidget *label;


itoa(int i,char* string)//将整数转换成字符串后返回string
{
int power,j;
j=i;
for(power=1;j>=10;j/=10)
power*=10;
for(;power>0;power/=10)
{
*string++='0'+i/power;
i%=power;
}
*string='\0';
}



gint progress_timeout( gpointer data )
{
  GString *string;
  gdouble new;
  char s[10];
  string = g_string_new ("");//刷新数字形式的内存相关信息
new= sell+1;
if (new >20){ 
gtk_label_set_text (GTK_LABEL (label),"票已经售完!");//显示到标签上
return FALSE;}

itoa(new,s);//转换为字符串
g_string_append (string, "窗口售票数:");
g_string_append (string, s);
gtk_label_set_text (GTK_LABEL (label),string->str);//显示到标签上
sell=new;
  return TRUE;/* 这是一个timeout函数,返回 TRUE,这样它就能够继续被调用 */
} 



 

void destroy_progress( GtkWidget     *widget,
                                 gpointer data)
{
    gtk_main_quit ();
}



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

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//新建窗口
    gtk_window_set_resizable (GTK_WINDOW (window), TRUE);//窗口尺寸可变
    gtk_window_set_default_size (GTK_WINDOW (window), 200,100);//默认窗口尺寸大小
    g_signal_connect (G_OBJECT (window), "destroy",
	              G_CALLBACK (destroy_progress),
                      NULL);

    gtk_window_set_title (GTK_WINDOW (window), "售票窗口1");//设置标题
    gtk_container_set_border_width (GTK_CONTAINER (window), 0);//设置边框宽度

    vbox = gtk_vbox_new (FALSE, 5);//新建盒子
    gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);//设置边框宽度
    gtk_container_add (GTK_CONTAINER (window), vbox);//加入窗口
    gtk_widget_show (vbox);//显示盒子
  
    align = gtk_alignment_new (0.5, 0.5, 0, 0); /* 创建一个组合对齐构件 */   
    gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 5);
   //装入盒子,符合构件大小,多余空间周围分布
    gtk_widget_show (align);

   label=gtk_label_new ("");
   gtk_widget_show (label);
   gtk_box_pack_start (GTK_BOX (vbox),label, FALSE, FALSE, 5);
   gtk_label_set_text (GTK_LABEL (label),"窗口售票数:0");//显示到标签上

    timer = gtk_timeout_add (1000, progress_timeout,NULL);


    button = gtk_button_new_with_label ("exit"); /* 添加一个按钮,用来退出应用程序 */
    g_signal_connect_swapped (G_OBJECT (button), "clicked",
                              G_CALLBACK (gtk_widget_destroy),
                              window);//被点击后调用gtk_widget_destroy函数
    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);

    gtk_widget_show (button);
    gtk_widget_show (window);
    gtk_main ();
    return 0;
}