crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

История благодарностей участнику Koloyar ::: Спасибо сказали: 1 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
2.6.2011, 14:40 Gtk ProgressBar
RazrFalcon, логика поведения мне как раз понятно, у меня были проблемы с реализацией именно на GTK. Но в итоге я справился с проблемой, привожу примерный код: может кому еще пригодится, во всяком случае я больше нигде не встречал рассмотрения GTK progressbara в этом ключе:

void on_btncalc_clicked  (GtkObject *object, gpointer user_data)  //ф-я нажатия кнопки
{
   g_thread_create_full(thread_func,user_data,0,TRUE,FALSE,G_THREAD_PRIORITY_LOW,&error);  //порождаем поток  
}


gpointer   thread_func(gpointer data)
{
   printf("сообщение из потока:\n");

   long_time_func (pa1, pa2);         //наша ф-я с циклом

   g_thread_exit(GINT_TO_POINTER(10));  

   return NULL;
}

int long_time_func (int param1, int param2) //ф-я с долгим циклом
{
  int i;
  for(i=0; i<1000;++i)
  {
    /*действия над параметрами*/
  
      gdk_threads_enter ();  //приостанавливаем поток
        gtk_progress_bar_set_fraction(progressbar1, i/1000);     изменяем прогресбар на форме, следовательно наход. в др. потоке
        gdk_flush();  
      gdk_threads_leave ();   //запускаем поток дальше
  }
  return 0;
}
Litkevich Yuriy,

RSS Текстовая версия Сейчас: 27.2.2020, 20:40