PDA

Просмотр полной версии : Как бороться с зависанием?



iscan
09.04.2005, 21:45
или как передать управление окну (пишу на API).

например у меня в проге выполняются продолжительные вычисления, и пока они не закончатся прога не реагирует на InvalidateRect - ЗАВИСАЕТ.
Короче как с этим бороться?

Спасибо заранее.

AiK
10.04.2005, 12:44
Делай вычисления в отдельном потоке.

Hawk
11.04.2005, 09:09
Можно также после Invalidate вызвать UpdateWindow при этом окно переритсуется (обработается WM_PAINT) даже если вы не закончили работу в текущем обработчике события.

Romeo
11.04.2005, 16:30
Либо делать вычесления в отдельном потоке, либо на каждой итерации в вычеслении делать прокачку сообщений.


while (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (::GetMessage(&msg, NULL, 0, 0) > 0)
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}