C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Многопоточность, Как сделать заставку
Aptem
Отправлено: 10.08.2003, 06:44


Мастер участка

Группа: Участник
Сообщений: 349



Привет, ВСЕМ !!!

У меня такая проблема:

Мое приложение выполняет какую-то задачу, я бы хотел, чтобы пользователь в это время увидел небольшое окно, на котором, например, был бы виден ход операции и надпись типа: "Происходит загрузка данных, это займет несколько минут..."

Я знаю, что это делается с помощью потоков, не мог бы кто-нибудь подробно описать как это сделать !!!

Спасибо за внимание !!!
Георгий
Отправлено: 10.08.2003, 12:28


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



Надо код, который "выполняет какую-то задачу" перенести в поток (см. уроки), придумать как организовать уведомление основного потока о достигнутом прогрессе, который и будет выведен пользователю. После того, как пройдёшся по граблям, ждём тебя опять...
qwer115
  Отправлено: 10.08.2003, 14:29


Ученик-кочегар

Группа: Участник
Сообщений: 11



а самый простой вариант это перед началом больших вычислений, загрузки показать форму с сообщением, можно протеканием хода процесса там типа со всякими progressbar' ами и из циклов, вычислений вызывать Application->ProcessMessages() для реагирования на события полученные за время вычислений

например:

InfoForm->Show();
for(int i = 0; i < 100000; i++)
{
/* там всякие дела */
InfoForm->ProgressBar1->Progress++;
Application->ProcessMessages();
}

Отредактировано qwer115 — 10/08/2003, 15:32
SEDEGOFF
Отправлено: 11.08.2003, 09:41


Ученик-кочегар

Группа: Участник
Сообщений: 19



[CODE]
InfoForm->Show();
for(int i = 0; i < 100000; i++)
{
/* там всякие дела */
InfoForm->ProgressBar1->Progress++;
Application->ProcessMessages();
} [CODE]
Но тормозить эту будет здраво

Вернуться в Вопросы программирования в C++Builder