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

📄 1-2.c

📁 使用GTK+的三个并发进程的演示
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include<gtk/gtk.h>GtkWidget *bar,*label,*table,*window;char buf[20];int percent;gint quit(){	gtk_main_quit();	exit(0);}gint refresh(){	if(percent==100)  quit();  //进度条走完则关闭对话框	sprintf(buf,"%d",++percent);	strcat(buf,"% finished!");	gtk_label_set_text(GTK_LABEL(label),buf);  //更新标签	gtk_progress_set_percentage(GTK_PROGRESS(bar),(float)percent/100);  //更新进度条}int gtk(int argc,char *argv[],char *title){	gtk_init(&argc,&argv);  //启动GTK	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);  //视窗	gtk_window_set_title(GTK_WINDOW(window),title);  //设置标题	gtk_window_set_policy(GTK_WINDOW(window),FALSE,FALSE,TRUE);  //固定大小	gtk_container_border_width(GTK_CONTAINER(window),10);  //设定边框宽度	gtk_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(quit),NULL); //收到destroy信号	table=gtk_table_new(2,1,TRUE);  //容器	gtk_container_add(GTK_CONTAINER(window),table);  //将容器加入窗口中	label=gtk_label_new("%0 finished!");  //标签	gtk_table_attach(GTK_TABLE(table),label,0,2,0,1,GTK_FILL,GTK_FILL,0,0);  //将标签加容器中	bar=gtk_progress_bar_new();  //进度条	gtk_table_attach(GTK_TABLE(table),bar,0,2,1,2,GTK_FILL,GTK_FILL,0,0);  //将进度条加容器中	percent=0;  //初始化	gtk_widget_show_all(window);	gtk_timeout_add(200,refresh,NULL);  //定时器	gtk_main();  //所有控制结束于此并等待事件发生	return 0;}int main(int argc,char *argv[]){	pid_t pid;	pid=fork();  //创建进程2	if(!pid){  //为进程2		pid=fork();  //创建进程3		if(pid>0){  //为进程2			sleep(2);			gtk(argc,argv,"Process2");		}		sleep(3);		gtk(argc,argv,"Process3");	}	if(pid>0){ //为进程1		sleep(1);		gtk(argc,argv,"Process1");	}	if(pid<0)  exit(0);  //创建失败	return 0;}

⌨️ 快捷键说明

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