GTK eclipse下线程实现界面部分刷新的效果

来源:互联网 发布:狼居胥山在哪 知乎 编辑:程序博客网 时间:2024/06/06 16:44

GTK界面编程要想实现刷新的效果,用线程实现是个好的方法,下面简要介绍eclipse下其实现步骤:


1:配置eclipse环境:

      在点击“项目”(project)的“属性”(properties)选项,在弹出的窗口中选中C/C++ Build中的“设置”(setting)这个选项,

      在其中的GCC C Linker中的Miscellaneous中填入如下内容:

            Linker flags: `pkg-config --libs gtk+-2.0 gthread2.0`

      在其中的GCC C Linker中的Miscellaneous中填入如下内容:

            Other flags: `pkg-config --flags gtk+-2.0`


2:包含头文件:

      #include <gtk/gtk.h>

      #include <pthread.h>


3:初始化线程:

      if (!g_thread_supported ())        //如果gthread没有被初始化
             g_thread_init (NULL);       //进行初始化
      gdk_threads_init ();                   //初始化GDK多线程,这样可以在多线程中使用

                                                       //成对的gdk_threads_enter()

                                                       //和gdk_thread_leave(),在Gtk程序保证         

                                                       //gdk_threads_init()在main loop执行之前执行,

                                                       //为了保证线程安全应该在gtk_init()之前调用,

                                                       //g_thread_init()必须在函数gdk_threads_init()之前执行。

4:调用函数:

      例如为:

      void refresh_page(){

      int i;

      for(i=0;;i++){

            sleep(10);//线程谁上十秒钟

            gdk_threads_enter();

             g_thread_create((GThreadFunc)refresh_page, NULL, FALSE, NULL);

                 //其中的refresh_page是界面函数,

                  //这样可以每十秒钟刷新这个界面

            gdk_threads_leave();

      }