📄 1-2.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 + -