GTK<读取文件进度条>

#include <gtk/gtk.h>

#include <stdio.h>

#include <string.h>

#include <windows.h>

#define FILE_READ_PATH "F:/123.txt"

static float read_len = 0.0;

gboolean update_progress_bar(gpointer data);

int main(int argc,char *argv[])

{

GtkWidget *window,*vbox,*pbar;

gtk_init(NULL,NULL);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);

gtk_window_set_title(GTK_WINDOW(window),"Process bar");

gtk_window_set_default_size(GTK_WINDOW(window),300,250);

vbox = gtk_vbox_new(FALSE,0);

gtk_container_add(GTK_CONTAINER(window),vbox);

pbar = gtk_progress_bar_new();

gtk_box_pack_start(GTK_BOX(vbox),pbar,FALSE,FALSE,50);

g_timeout_add(100,update_progress_bar,pbar);

g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);

gtk_widget_show_all(window);

gtk_main();

return 0;

}

gboolean update_progress_bar(gpointer data)

{

FILE *fp = NULL;

//FILE *fwp = NULL;

char buff[8] = {0};

gint size = 10,file_len = 0;

unsigned char *pbuff;

GtkProgressBar *pbar = (GtkProgressBar *)data;

if((fp = fopen(FILE_READ_PATH,"r")) == NULL)

{

return 0;

}

/*if((fwp = fopen("F:/kang.txt","ab")) == NULL)

{

return 0;

}*/

fseek(fp,0,SEEK_END);

file_len = ftell(fp);

pbuff = (unsigned char *)malloc((size+1)*sizeof(unsigned char));

memset(pbuff,0,size*sizeof(unsigned char));

if(read_len <= file_len)

{

fseek(fp,(long int)read_len,SEEK_SET);

fread(pbuff,sizeof(unsigned char),size,fp);

/* fwrite(pbuff,size*sizeof(unsigned char),1,fwp);*/

gtk_progress_bar_set_fraction(pbar,read_len/file_len);

sprintf(buff,"%d%s",(int)((read_len/file_len)*100),"%");

gtk_progress_bar_set_text(GTK_PROGRESS_BAR(pbar),buff);

read_len += size;

return TRUE;   //必须返回TRUE;

}

if(read_len > file_len)

{

gtk_main_quit();

return TRUE;

}

fclose(fp);

/*fclose(fwp);*/

free(pbuff);

return TRUE;     //必须返回TRUE;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,876评论 0 17
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,285评论 18 399
  • 前几天临近成绩公布截止日,我每天都要重复刷新网站无数次,急切盼望知道结果。 直到昨天晚上,锻炼完身体准备放松拉伸,...
    休止符UPUP阅读 1,697评论 0 0
  • 要说我的第一次拒签也是外省人的婚姻。 自小家教比较严格,即使我已经工作了,还是有十点半的门禁,如加班晚回去都必打电...
    达恩阅读 1,535评论 0 0
  • 人跟人有时真的难以沟通
    听时间流淌的声音阅读 952评论 0 1

友情链接更多精彩内容