или как передать управление окну (пишу на API).
например у меня в проге выполняются продолжительные вычисления, и пока они не закончатся прога не реагирует на InvalidateRect - ЗАВИСАЕТ.
Короче как с этим бороться?
Спасибо заранее.
Как бороться с зависанием?
Модераторы: Duncon, Hawk, Romeo, Eugie
Делай вычисления в отдельном потоке.
Даже самый дурацкий замысел можно воплотить мастерски
Можно также после Invalidate вызвать UpdateWindow при этом окно переритсуется (обработается WM_PAINT) даже если вы не закончили работу в текущем обработчике события.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Либо делать вычесления в отдельном потоке, либо на каждой итерации в вычеслении делать прокачку сообщений.
Код: Выделить всё
while (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (::GetMessage(&msg, NULL, 0, 0) > 0)
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.