MSG msg;
while(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
Как зделать чтоб програма отвечала на сообщения при выполнении длинного метода?
bool ProcessMessage()
{
return TRUE;
}
Цитата: AVDEY
Где то видел тему как зделать так чтоб програма отвечала при работе длинного метода. По моему ета функция .Но как ето реализовать не разобралса. Если кто нибуть знает подскажите. И лутше какой то пример.
bool ProcessMessage()
{
return TRUE;
}
bool ProcessMessage()
{
return TRUE;
}
Либо выполнять в другом потоке, либо, как вариант переодически вызывать
Код:
Либо написать стейт-машину.
Цитата: Green
Либо написать стейт-машину.
А можна с этого момента чуть поподробней?
Помещаешь каждый шаг в отдельный case блока switch/case.
Помешаешь всё это в процедуру, которая за один свой вызов делает один шаг (один case) и прирашивает параметр switch, т.о. переключается на след. шаг.
Вызываешь эту процедуру по таймеру или на каждой итерации, например, главного цикла сообщений.
Код:
void step()
{
static int i = 0;
switch(i++)
{
case 0:
..........
break;
case 1:
..........
break;
case N:
..........
break;
}
}
{
static int i = 0;
switch(i++)
{
case 0:
..........
break;
case 1:
..........
break;
case N:
..........
break;
}
}
Но тогда время выполнения метода резко увеличивается.
Тебе уже предлагали: делай отдельным потоком.