Назад | Начало урока |
Содержание

День 5 (продолжение 3)

Вопросы:

  1. К чему привело добавление к символам ресурсов(Resours Simbols) идентификаторов двух таймеров?

    Были определены идентификаторы двух таймеров. Эти идентификаторы стали доступны как константы приложению в целом.

  2. Каким еще способом можно добавить к приложению эти идентификаторы?

    Можно определить их как константы с помощью директивы #define в заголовочном файле класса(TimersDlg.h) или в файле исходного кода (TimersDlg.cpp) :

    //////////////////////////
    //CTimresDlg

    #define ID_CLOCK_TIMER 1
    #define ID_COUNT_TIMER 2

    class CTimresDlg:publicCDialog
    {

    . . .

  3. Как функция OnTimer отличает таймеры один от другого?

    Для определения таймера событие которого произошло используется идентификатор таймера.

  4. Сколько сообщений о событиях таймера получит приложение, в случае если оно было занято на протяжении минуты, вследствии чего получение сообщений о событиях таймера было заблокировано, а временной интервал таймера составляет одну секунду?

    Одно сообщение.

Упражнения:

Измените приложение таким образом, чтобы в момент запуска таймера-счетчика, временной интервал таймера-часов инициализировался значением временного интервала таймера-счетчика. После остановки таймера-счетчика, установите односекундный интервал для таймера-часов.

Листинг 5A Модифицированные функции OnBnClickedBstarttime() и OnBnClickedBstoptime()


void CTimersDlg::OnBnClickedBstarttime()
{
//обновить переменные

UpdateData(TRUE);

//инициализировать счетчик m_iCount
m_iCount = 0;

//Форматировать (Format) счетчик для отображения
m_sCount.Format("%d",m_iCount);

//обновить диалоговое окно
UpdateData(FALSE);

//Запустить таймер-счетчик

SetTimer(ID_COUNT_TIMER,m_iInterval,NULL);

//остановить таймер-часы
KillTimer(ID_CLOCK_TIMER);

//перезагрузить таймер часов с интервалом, хранимым в счетчике
SetTimer(ID_COUNT_TIMER,m_iInterval,NULL);

m_cStopTime.EnabltWindow(TRUE);
m_cStartTime.EnabltWindow(FALSE);

}


void CTimerDlg::OnBnClicedBstoptime()
{

KillTimer(ID_COUNT_TIMER); //остановить таймер-часы
KillTimer(ID_CLOCK_TIMER);

//перезапустить таймер -часы с интервалом в 1 секунду
SetTimer(ID_CLOCK_TIMER,1000,NULL);

m_cStopTime.EnabltWindow(TRUE);
m_cStartTime.EnabltWindow(FALSE);

}

Назад | Вверх | Начало урока |
Содержание

Hosted by uCoz