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

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


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

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



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Visual C++. MFC
Урок 8. Добавляем второй таймер

Давайте теперь посмотрим, что мы должны сделать, если нам надо работать одновременно с двумя таймерами. Проблема здесь в том, что обработчик для таймера у нас один, но мы хотим производить разные действия при тиканьи одного таймера и при тиканьи другого. Для этого мы должны их как-то различать. Но у нас для этого служит идентификатор таймера (первый параметр в методе SetTimer). Его-то мы и используем.

Добавляем в программу ещё один таймер и сразу пишем код в деструкторе класса для уничтожения нового таймера:

CMyMainWnd(){
 
     Create(NULL,"My title");
 
     SetTimer(1, 1000, NULL);
 
     SetTimer(2, 3000, NULL);
 
 }
 
 ~CMyMainWnd(){
 
     KillTimer(1);
 
     KillTimer(2);
 
 }

Идентификатор нового таймера 2 , и он тикает раз в три секунды. Отдельный обработчик для второго таймера писать не надо. А надо изменить наш старый обработчик для таймера следующим образом:

void CMyMainWnd::OnTimer(UINT nIDEvent){
 
     if(nIDEvent==1)
 
         MessageBeep(-1);
 
     else
 
         SetWindowText("Title");
 
 }

У метода OnTimer есть параметр типа UINT. Мы его раньше не использовали, а теперь используем. Это и есть идентификатор таймера, для которого мы обрабатываем сообщение WM_TIMER. Если сообщение от первого таймера, то издаём сигнал, а если от второго, то меняем заголовок окна на "Title".

Запускаем программу. Звук раздаётся раз в секунду, и через три секунды заголовок окна меняется.

Новый проект

С этим занятием всё.



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

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




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



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


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