Отправляет email-рассылки с помощью сервиса Sendsay

Windows API

  Все выпуски  

Windows API


Информационный Канал Subscribe.Ru

Windows API. Уроки с сайта http://progs.biz

Рассылка №6

Windows API. Урок 6. Работаем с таймером.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 6. Работаем с таймером.

Паппас К., Мюррей У. Эффективная работа: Visual C++.NET

Заказать на Озоне

Подробнее

Рассылки сайта progs.biz через subscribe.ru
Уроки по Java
Уроки по Java с самого начала. Основные конструкции языка, классы в Java, создание приложений с графическим интерфейсом, создание апплетов, работа в JBuilder от Borland'а, сетевые приложения.

Windows API. Урок 6. Работаем с таймером

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

Для создания таймера используется функция SetTimer, для удаления - KillTimer. Созданный таймер будет посылать в вашу программу сообщение WM_TIMER.

Напишем программу, которая будет раз в секунду издавать звуковой сигнал. Для сего внесем следующие изменения в функцию WinMain:

    ...
    SetTimer(hwnd, 1, 1000, NULL);
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    KillTimer(hwnd, 1);
    ...

Сначала мы создаем таймер функцией SetTimer. Параметры у нее такие: первый - это HWND того окна, к которому таймер относится. У нас оно равно hwnd. Таймер всегда должен относится к определеному окну. Второй параметр - это идентификатор таймера. Мы поставили его в 1. Ели создадим еще один таймер, то для него зададим другой идентификатор (например, 2). Третий параметр определяет, как часто наш таймер будет посылать сообщение WM_TIMER. Эта величина задается в миллисекундах. Значение 1000 означает, что таймер будет посылать сообщение WM_TIMER раз в секунду. Четвертый параметр задает функцию, которая будет обрабатывать сообщение WM_TIMER. Если этот параметр установлен в NULL, то обрабатывать будет оконная процедура (вернее сообщение отправится в очередь сообщений приложения).

Обратите внимание, где мы создаем таймер - в WinMain. Это потому, что мы хотим, чтобы таймер запускался сразу с нашей программой. Но можно его заводить и в другом месте - в оконной процедуре, например.

Нам осталось добавить обработчик для WM_TIMER в оконную процедуру. Это делаем так:

    switch (msg){
    case WM_TIMER:
        MessageBeep(-1);
        break;
        

Запускаем программу. Раз в секунду должен раздаваться звуковой сигнал.

Наверх

Copyright Алексеев Игорь, 2003
Copyright сайт progs.biz, 2003
Распространение материалов без разрешения владельцев авторских прав запрещено.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное