⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex22_2.c

📁 linux 高级编程的例子源码,包括了本书上的所有代码
💻 C
字号:
/*filename:ex22_2.c*/
#include <gtk/gtk.h>
int count;
int timeron;
GtkWidget *progress;

gint delete_handle(GtkWidget *widget,gpointer gdata)
{
	g_print("application quitting----\n");
	gtk_main_quit();
	return FALSE;
}
void updateprogress()
{
	if (!timeron)
		return ;
	count++;
	if (count>100)
	{
		gtk_main_quit();
		return ;
	}
    gtk_progress_bar_update(GTK_PROGRESS_BAR(progress),(float)(count)/100);
	return ;
}

void OnReset(GtkWidget *widget, gpointer *data)
{
	count=0;
	gtk_progress_bar_update(GTK_PROGRESS_BAR(progress),0.0);
	return ;
}

void OnPause(GtkWidget *widget, gpointer *data)
{
	if (timeron==1)
		timeron=0;
	else 
		timeron=1;
	return ;
}
void OnClose(GtkWidget *widget, gpointer *data)
{
	count=100;
	gtk_progress_bar_update(GTK_PROGRESS_BAR(progress),1.0);
        gtk_main_quit();
	return ;
}

int main(int argc,char *argv[])
{
   GtkWidget *window;
   GtkWidget *button;
   GtkWidget *box1,*box2;
   gint timer;

   gtk_init(&argc,&argv);

   window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title(GTK_WINDOW(window),"Test Progress Bar");
   gtk_signal_connect(GTK_OBJECT(window),"delete_event",
	                  GTK_SIGNAL_FUNC(delete_handle),NULL);
   
   box1 = gtk_vbox_new(FALSE, 0);
   gtk_container_add(GTK_CONTAINER(window),box1);

   progress=gtk_progress_bar_new ();
   gtk_box_pack_start(GTK_BOX(box1),GTK_WIDGET( progress), TRUE, TRUE, 0);
   count=0;
   timeron=1;
   gtk_progress_bar_update(GTK_PROGRESS_BAR(progress),0.5);
   gtk_widget_show(progress);

   timer=gtk_timeout_add(100,(GtkFunction)updateprogress,NULL);

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

   button=gtk_button_new_with_label("Reset");
   gtk_box_pack_start(GTK_BOX(box2),button,TRUE,TRUE,0);
   gtk_widget_show(button);
   gtk_signal_connect(GTK_OBJECT(button),"clicked",
	                  GTK_SIGNAL_FUNC(OnReset),NULL);

   button=gtk_button_new_with_label("Pause");
   gtk_box_pack_start(GTK_BOX(box2),button,TRUE,TRUE,0);
   gtk_widget_show(button);
   gtk_signal_connect(GTK_OBJECT(button),"clicked",
	                  GTK_SIGNAL_FUNC(OnPause),NULL);

   button=gtk_button_new_with_label("Close");
   gtk_box_pack_start(GTK_BOX(box2),button,TRUE,TRUE,0);
   gtk_widget_show(button);
   gtk_signal_connect(GTK_OBJECT(button),"clicked",
	                  GTK_SIGNAL_FUNC(OnClose),NULL);

   gtk_widget_show(box2);
   gtk_widget_show(box1);
   gtk_widget_show(window);
     
   gtk_main();
   gtk_timeout_remove(timer);
   return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -