Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
alpxp
0 / 0 / 0
Регистрация: 13.01.2009
Сообщений: 3
#1

Как организовать таймер? - C++

13.01.2009, 21:48. Просмотров 1344. Ответов 5
Метки нет (Все метки)

Как мне в VC++ организовать таймер, задержку или что то в этом роде...
Желательно не очень сложно.
Длагодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2009, 21:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как организовать таймер? (C++):

как сделать таймер? - C++
вообщем нужно сделать таймер, для консольного приложения, если все время прошло, то выводится одно сообщение, если во время таймера нажали...

Как использовать таймер - C++
Здравствуйте, господа. Можно ли каким-либо образом использовать таймер в программе вообще? Увидел описание таймера, однако не...

Как подключить таймер к игре? - C++
Как подключить таймер к игре чтоб она выключалась после конца времени ?

Сделать таймер как в Lost - C++
Подскажите где можно найти программу таймер как в сериале Лост, что б она требовала вводить код 4 8 15 16 23 42 каждые 108 минут Ну я...

Как написать свой таймер? - C++
Чтобы функция выполнялась скажем каждые 200 миллисекунд. Сейчас WM_TIMER делает это, но он не подходит. Искал по многим запросам в гугле и...

Пузырьковая сортировка. Как реализовать таймер - C++
Пузырьковая сортировка. Как реализовать таймер? #include <vcl.h> #include <conio.h> #include <iostream.h> #pragma hdrstop ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
palva
2611 / 1833 / 262
Регистрация: 08.06.2007
Сообщений: 6,990
Записей в блоге: 4
14.01.2009, 13:33 #2
Код
#include <windows.h>
#include <stdio.h>
void main() {
  printf('Sleep 1 sec... ');
  Sleep(1000);
  printf('Sleep 2 sec... ');
  Sleep(2000);
  printf('OK
');
}
Язык C, компилятор Borland 5.5.1
alpxp
0 / 0 / 0
Регистрация: 13.01.2009
Сообщений: 3
14.01.2009, 14:08  [ТС] #3
Немножко не то!
Мне не надо чтобы вся прога остановилась. Мне необходимо чтобы она продолжала заниматся своими делами, а вот через 2, или 3(неважно) минуты что-то сработало.
palva
2611 / 1833 / 262
Регистрация: 08.06.2007
Сообщений: 6,990
Записей в блоге: 4
14.01.2009, 15:23 #4
Тогда для ожидания и действий после завершения ожидания можно создать отдельный поток:
Код
#include <windows.h>
#include <stdio.h>

DWORD WINAPI ThreadProc(LPVOID lpParameter) {
  Sleep(*(long *)lpParameter);
  printf('OK');
  return 0;
}

void main() {
  HANDLE h;
  int i;
  DWORD ExitCode=STILL_ACTIVE;
  long DelayForThread=4000;
  h=CreateThread(NULL, 0, ThreadProc, &DelayForThread, 0 , NULL);
  if(!h) {
    printf('Error Thread Creation
');
    return;
  }
  for (i=1; i<50; i++) {
    printf('.');
    Sleep(100);
  }
  printf('Main_OK');
  while(ExitCode==STILL_ACTIVE) {
    Sleep(100);
    GetExitCodeThread(h, &ExitCode);
  }
  printf('
');
}
Попробуйте запустить эту прогу как есть, а потом заменить число 4000 на 6000, чтобы период ожидания выходил за рамки содержательной работы основного потока. Цикл в конце позволяет синхронизировать потоки. Но возможна совершенно другая схема синхронизации - всё в ваших руках.
YPFeliks
1 / 1 / 0
Регистрация: 13.08.2008
Сообщений: 12
14.01.2009, 15:50 #5
Привет всем.
Я вообще-то не программер на С. Но выход самый простой, я его даже в VB применял.
Воспользуйтесь API-шной функцией SetTimer.
Посмотри ее в MSDN-е, а внизу там прописаны остальные KillTimer и TimerProc. Все остальное сделает система сама.
palva
2611 / 1833 / 262
Регистрация: 08.06.2007
Сообщений: 6,990
Записей в блоге: 4
14.01.2009, 21:57 #6
Это стандартный способ решения проблемы, но если у вас Windows-приложение. Мне не удалось приделать эту функцию SetTimer к консольному приложению. Если кто-нибудь знает, как это сделать, будет интересно прочитать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2009, 21:57
Привет! Вот еще темы с ответами:

Как реализовать таймер в консольном приложении? - C++
И как-нибудь без while и sleep, чтобы программа не висела. Пытался делать через winapi, но не понял как функцию, выполняемую при &quot;тикании&quot;...

Как сделать стабильный таймер в Windows XP,7,8 с задержкой в одну микросекунду? - C++
Собственно вопрос в топике, главное, чтоб таймер был стабилен и не скакал и чтоб задержка была в одну микросекунду. Тоесть возможно ли в...

как организовать ? - C++
вот такой вопрос нужно написать программу которая определяет минимальное число во введенной с клавиатуры последовательности положительных...

Как организовать цикл? - C++
Здравствуйте. Вообщем имеется уравнение,в правой части которого идёт бесконечное сложение.Слагаемые появляются по такому закону x -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.01.2009, 21:57
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru