Jess |
Отправлено: 22.04.2004, 03:01 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Привет всем, есть трудность одна...Окно при выполнении какой-либо задачи блокируется. Каким образом сделать его не блокируемым(например идёт вывод результатов с сокета, и в это время в ричэдите Я могу ползунок тягать в вверх или в низ).
Благодарю за ранее..........
|
|
Иван |
Отправлено: 22.04.2004, 06:07 |
|
Машинист паровоза
Группа: Участник
Сообщений: 207
|
Если я правильно понял то вашей форме во время каких то вычислений нужно получать сообщения от Windows.
Есть такая функция ProcessMessages()
её и надо использовать.
например:
CODE | while(something)
{
//...
//вычисления
...
Application->ProcessMessages();
}
|
или же вынести выполнение этой самой задачи в отдельный поток.
Этого никогда не делал,поэтому пример привести не могу.
Вот здесь объясняется как это сделать:
Создание многопоточных приложений
Отредактировано Иван — 22/04/2004, 07:40
|
|
olegenty |
Отправлено: 22.04.2004, 06:42 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
В случае с использованием ProcessMessages() помни о рекурсии (обработчики событй срабатывают вложенно), поэтому невредно блокировать некоторые контролы.
Решение с потоком посложнее в реализации, зато более универсальное.
|
|
Gedeon |
Отправлено: 22.04.2004, 08:38 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Application->ProcessMessages(); подходит в том случае, если действительно ведутся только вычисления, причем не зависящие от разрешенных в данный момент на форме контролов. Ели же нужно далать, например, прием от сокетов, то тут многопоточное приложение рулит. Преимущество еще в том, что вы принимать их можете любое количество. Сложнее в реализации — да, но сложного ничего нет, читайте вышеприведенную ссылку и все получится.
|
|
Jess |
Отправлено: 23.04.2004, 03:09 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Будем пробывать и ошибаться...
Благодарствую всех кто откликнулся...
|
|