Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пауза в программе но не Sleep

386
10 июня 2006 года
newcss
297 / / 05.04.2005
Мне в программе нужно реализовать паузу, но так чтобы программе не умирала (использование функции Sleep()), вообщем покопался на форумах, нашел альтернативное решение:
Код:
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;
}


Да, программа честно делает паузу, не умирает, окошко с программой можно водить по экрану, но вот на ввод с клавиатуры различного текста не реагирует =(((. Неподскажите как можно исправить ?
562
11 июня 2006 года
tarekon
175 / / 19.08.2003
Перед вызовом DispatchMessage() добавить вызов

TranslateMessage(&msg);
386
11 июня 2006 года
newcss
297 / / 05.04.2005
О =) как раз само-то ! =) паСиб =)
1.9K
13 июня 2006 года
Anton Chik
175 / / 26.09.2005
попробуй еще вот так
Код:
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;
}
45K
24 апреля 2009 года
qpokyc
21 / / 27.03.2009
Можно исчо используя SetTimer(), KillTimer() и обрабатывая WM_TIMER. А программа умирать не будет, если вынести GUI в отдельный поток, в смысле задачу вынести, а GUI оставить в главном.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог