void pause_in_prog(int pause)
{
MSG msg;
int delay=1000*pause; //пауза в секундах
int lasttime=GetTickCount();
char message_bar[30], ms[20];
int currenttime;
block_pause=true;
do
{
if(PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ))
{
DispatchMessage(&msg); //
}
currenttime=GetTickCount();
strcpy(message_bar,"Пауза: ");
itoa(delay-(currenttime-lasttime),ms,10);
strcat(message_bar,ms);
StatusBar_for_print->Panels->Items[1]->Text=message_bar;
}
while(currenttime-lasttime<delay);
block_pause=false;
}
Пауза в программе но не Sleep
Код:
Да, программа честно делает паузу, не умирает, окошко с программой можно водить по экрану, но вот на ввод с клавиатуры различного текста не реагирует =(((. Неподскажите как можно исправить ?
TranslateMessage(&msg);
О =) как раз само-то ! =) паСиб =)
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TDateTime t1;
bool stop=false;
t1=Now();
while(!stop)
{
stop=(Now()-t1)>StrToDateTime("00:00:05");
Application->ProcessMessages();
}
ShowMessage(" прошло 5 сек");
return;
}
{
TDateTime t1;
bool stop=false;
t1=Now();
while(!stop)
{
stop=(Now()-t1)>StrToDateTime("00:00:05");
Application->ProcessMessages();
}
ShowMessage(" прошло 5 сек");
return;
}
Можно исчо используя SetTimer(), KillTimer() и обрабатывая WM_TIMER. А программа умирать не будет, если вынести GUI в отдельный поток, в смысле задачу вынести, а GUI оставить в главном.