Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Visual C++. MFC
Урок 7. Работа с таймером

Продолжим развитие нашей программы.

Прежде всего обсудим, что делает таймер. После установки таймер начинает "тикать". Это означает, что ваша программа получает через определённый промежуток времени сообщение WM_TIMER. В обработчике этого сообщения можно написать любой код. Важно, что код обработчика будет выполняться через определённые промежутки времени.

Сейчас мы с вами посмотрим, как можно в нашей программе запустить таймер. Прежде всего мы должны его создать. Для этого конструктор нашего класса CMyMainWnd добавите следующий код:

 
 CMyMainWnd(){
 
     Create(NULL,"My title");
 
     SetTimer(1, 1000, NULL);
 
 }
 
 

Функция SetTimer имеет несколько параметров. Первый (у нас он равен 1) - это идентификатор таймера. Второй (1000 в нашем случае) - это через сколько миллисекунд таймер тикает. 1000 означает что раз в секунду, 500 - что два раза в секунду. Третий параметр ставим в NULL. Это означает, что мы будем обрабатывать сообщение WM_TIMER для нашего таймера в функции OnTimer нашего оконного класса. Но в принципе третий параметр - это адрес функции-обработчика.

Таймер добавили, теперь надо написать обработчик. Как вы уже знаете, для этого вы должны сделать три действия - добавить соответствующий метод в класс, написать его реализацию и добавить соответствующий макрос в карту сообщений.

Добавляем метод в класс:

    ...
 
     afx_msg void OnPaint();
 
     afx_msg void OnTimer(UINT);
 
     DECLARE_MESSAGE_MAP()

Пишем реализацию данного метода:

void CMyMainWnd::OnTimer(UINT){
 
     MessageBeep(-1);
 
 }

Здесь мы методом

MessageBeep(-1);

говорим, что должен издаваться стандартный звук.

И, наконец, третий шаг - добавление макроса:

...
 
 ON_WM_PAINT()
 
 ON_WM_TIMER()
 
 END_MESSAGE_MAP()
 
 

Запускаем программу и прислушиваемся. Каждую секунду должен издаваться звук beep. Но, несмотря на то, что программа работает, надо ещё в конце программы таймер убить. Для этого вносим класс код для деструктора:

~CMyMainWnd(){
 
     KillTimer(1);
 
 }

У метода KillTimer один параметр - это идентификатор таймера. Ставим тут 1 (ведь наш таймер имеет именно такой идентификатор).



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS