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

Windows API

  Все выпуски  

Windows API


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


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

Рассылка № 8

Windows API. Урок 9. Обрабатываем WM_TIMER в CALLBACK-функции.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 9. Обрабатываем WM_TIMER в CALLBACK-функции.

Н. Секунов. Программирование на C++ в Linux.
Н. Секунов. Программирование на C++ в Linux.
Заказать на Озоне

Подробнее

Рассылки сайта progs.biz через subscribe.ru
Уроки по C/C++
Уроки по C/C++. Конструкции языка, указатели, объектно-ориентированное программирование, работа с файлами, библиотека STL и другое.

Windows API. Урок 9. Обрабатываем WM_TIMER в CALLBACK-функции

Обработка сообщений таймера может вестись как в оконной процедуре, так и в отдельной функции. Мы уже рассматривали, как обрабатывать сообщения в оконной процедуре в уроке 6. Сейчас мы посмотрим, как это можно делать в отдельной функции.

Для этого внесем в наше программу следующие дополнения. Во-первых, в самом начале программы добавим объявление нашей CALLBACK-функции:

VOID CALLBACK proc(HWND, UINT, UINT, DWORD);

Обратите внимание на то, что тип функции должен быть VOID, что обязательно надо написать слово CALLBACK и что набор параметров функции должен быть именно таким, как мы его написали. Имя может быть любым (у нас это proc).

Теперь надо изменить вызов функции SetTimer в функции WinMain. А именно последний параметр надо поменять с NULL на имя нашей фунции proc:

    ...
    SetTimer(hwnd, 1, 1000, proc);
    ...

Теперь напишем код самой функции proc. Ее можно написать, например, в конце файла. Код должен быть такой:

VOID CALLBACK proc(HWND hwnd, UINT, UINT, DWORD)
{
    static BOOL b = FALSE;
    if(b){
        SetWindowText(hwnd, "Title 1");
    }
    else{
        SetWindowText(hwnd, "Title 2");
    }
    b=!b;
}

На самом деле конечно не важно, что мы в этой функции напишем. Можем написать все, что угодно. Конкретно в нашем случае мы меняем заголовок окна - он будет то Title 1, то Title 2.

Ну и конечно мы должны убрать обработку сообщения WM_TIMER из оконной процедуры:

LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
{
    switch (Message){
    //case WM_TIMER:
    //    MessageBeep(-1);
    //    break;
    ...

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

Наверх

PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка .NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru
Copyright Алексеев Игорь, 2002-2003
Copyright сайт progs.biz, 2002-2003
Распространение материалов без разрешения владельцев авторских прав запрещено.


BannerDrive.ru

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

В избранное