Страница 1 из 1

Как бороться с зависанием?

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

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

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

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

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

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

Код: Выделить всё

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