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

 
Неблокируемое окно
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



Будем пробывать и ошибаться...smile.gif
Благодарствую всех кто откликнулся...

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