http://tikitak.narod.ru ---- Главная страница сайта
Шаг 32 - Использование Таймера
Создание проекта
Продолжаем развивать наш проект.
Создаем код
В файле Resource.h
.......
#define ID_TIMER_1
........
В обьявлении класса окна диалога.
class CDiaDlg : public CDialog
{
..........
// Implementation
afx_msg void OnTimer( UINT );
..........
protected:
...........
bool Test;
...........
};
В таблице откликов диалога
BEGIN_MESSAGE_MAP(CDiaDlg, CDialog)
............
ON_WM_TIMER()
END_MESSAGE_MAP()
Реализация
void CDiaDlg::OnTimer( UINT uTime)
{
m_List.AddString("Timer !");
}
Реализация нажатия на кнопку
void CDiaDlg::OnSave()
{
if (!Test)
{
Test=true;
SetTimer(ID_TIMER_1,1000,NULL);
}
else
{
Test=false;
KillTimer(ID_TIMER_1);
}
}
Добавления в конструктор диалогового окна
CDiaDlg::CDiaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDiaDlg::IDD, pParent)
{
.............
Test=false;
}
Описание
Таймер позволяет синхронизировать процессы с реальным временем. Работает он так - после запуска таймера , через указанный интервал вызывается процедура внутри которой и происходит анализ, реакция или подсчет вызовов.
Первым делом в файле заголовка ресурсов мы обьявили идентификатор таймера. Таймеров в программе может быть несколько с разными интервалами, а событие вызова таймера одно. Так вот при его вызове передается таймер, который сработал.
Далее в классе диалогового окна мы обьявили функцию реакции. Её имя и параметры оговорены заранее так как она виртуальная afx_msg. Как найти функцию соотвествующую событию ? Наведите курсор на событие, а в нашем случае ON_WM_TIMER() и нажмите F1.
Переменную Test я завел для остановки и запуска таймера. Следующим шагом, обьявлена реакция на событие в таблице откликов.
Реализация реакции простая. В наш список добавляеться строка Timer !, для визуального контроля над процессом.
Дальше у нас реакция на нажатие кнопки. Название функции OnSave оставлена специально, для меньших коректировок. Смотри в корень!. Запускается и останавливается таймер в зависимости от содержания переменной Test.
SetTimer запускает таймер. В эту функцию передаётся идентифкатор (имя) таймера и интервал реакции.
Для оснавки таймер нужно убить KillTimer указав имя.
Последнии строки это установка начального значения переменной Test в самом начале.
Итак запускаем. Нажимаем на кнопку, в списке добавляются строки. Нажимаем еще раз - всё остановилось. Вот так.
Шпаргалка
У таймера должен быть идентифкатор
#define ID_TIMER_1
Реакция на таймер должна быть в таблице отклика
ON_WM_TIMER()
И функция должна быть реализованна.
afx_msg void OnTimer( UINT );
Запуск - Остановка
SetTimer(....);
KillTimer(....);
Комментарии | Предыдущий Шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|