progs.biz  
Начало>WinAPI>API>Урок 8
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Алексей Дубовцев Microsoft .NET. Наиболее полное руководство.
Алексей Дубовцев Microsoft .NET. Наиболее полное руководство.
Заказать на Озоне



Яндекс-цитирования

Windows API
Урок 8. Программа с двумя таймерами

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

Меняем функцию WinMain:

    ...
    //1-й таймер
    SetTimer(hwnd, 1, 1000, NULL);
    // 2-й таймер
    SetTimer(hwnd, 2, 667, NULL);
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    KillTimer(hwnd, 1);
    KillTimer(hwnd, 2);

Тут мы завели второй таймер (с идентификатором 2). Для него интервал мы установили в 667 миллисекунд (чтобы он посылал WM_TIMER три раза в две секунды). В конце мы второй таймер убили.

Меняем оконную процедуру:

    ...
    static bool b;
    switch (msg){
    case WM_TIMER:
        if(wparam==1){
            //Обрабатываем сообщение от первого таймера
            MessageBeep(-1);
        }
        else{
            //Обрабатываем сообщение от второго таймера
            if(b){
                SetWindowText(hwnd, "Title 1");
            }
            else{
                SetWindowText(hwnd, "Title 2");
            }
            b=!b;
        }
        break;
        ...

Как вы видите, мы тут в обработчике для WM_TIMER анализируем параметр wParam. Именно в нем и передается идентификатор таймера. Если wParam равно 1, то это первый таймер (тикающий каждую секунду и издающий звуковой сигнал), в противном случае - второй (меняющий заголовок окна). Заголовок окна мы меняем API-функцией SetWindowText. Для этого мы используем статическую переменную b типа bool.

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев