Таймер в приложении Win32

Тема в разделе "MS Visual C++", создана пользователем SaV94, 28 дек 2009.

  1. SaV94

    SaV94 New Member

    Регистрация:
    2 ноя 2009
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте. У меня вот какая проблема. Создаю таймер по всем правилам, функцией SetTimer, но обработчик сообщений его вовсе не видит. WM_TIMER не обрабатывается.
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    код покажи - создания и обработки.
     
  3. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    Значит не правильно создаешь.
     
  4. SaV94

    SaV94 New Member

    Регистрация:
    2 ноя 2009
    Сообщения:
    3
    Симпатии:
    0
    <!--shcode--><pre><code class='CPP'>LRESULT CALLBACK MessageProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    static HDC hDc; //дескриптор устройства
    RECT rect;
    switch(msg)
    {
    case WM_CREATE:
    //=ИНИЦИАЛИЗАЦИЯ=
    {
    hDc = GetDC(hWnd);
    GetClientRect(hWnd, &rect);
    //=СОЗДАНИЕ ТАЙМЕРА=
    /*if(*/SetTimer(hWnd,TIMER,1000,NULL)/*)
    MessageBox(hWnd, L"Таймер не был создан", L"ERROR", MB_OK)*/;

    SetGraphicsMode(hDc,GM_ADVANCED);
    return 0;
    }
    case WM_PAINT:
    //=РИСОВАНИЕ=
    {
    //=РИСОВАНИЕ ИГРОВОЙ ОБЛАСТИ=
    HPEN hPen1 = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
    SelectObject(hDc, hPen1);
    MoveToEx(hDc, 15, 40, NULL);
    LineTo(hDc,15,460);
    LineTo(hDc,380,460);
    LineTo(hDc,380,40);
    LineTo(hDc,15,40);
    DeleteObject(hPen1);
    //=====РИСОВАНИЕ ОБЬЕКТОВ=====
    pl1.Draw(hDc);
    pl2.Draw(hDc);
    return 0;
    }
    case WM_KEYDOWN:
    //=НАЖАТИЕ КЛАВИШИ=
    {
    switch(wParam)
    {
    case VK_LEFT:
    {
    pl1.Hide(hDc);
    if (pl1.x>17)
    {
    pl1.x-=5;
    }
    pl1.Draw(hDc);
    break;
    }
    case VK_RIGHT:
    {
    pl1.Hide(hDc);
    if (pl1.x<277)
    {
    pl1.x+=5;
    }
    pl1.Draw(hDc);
    break;
    }
    case 0x41:
    {
    pl2.Hide(hDc);
    if (pl2.x>17)
    {
    pl2.x-=5;
    }
    pl2.Draw(hDc);
    break;
    }
    case 0x44:
    {
    pl2.Hide(hDc);
    if (pl2.x<277)
    {
    pl2.x+=5;
    }
    pl2.Draw(hDc);
    break;
    }
    case VK_ESCAPE:
    ReleaseDC(hWnd, hDc);
    PostQuitMessage(0);
    return 0;
    }
    UpdateWindow(hWnd);
    return 0;
    }
    case WM_TIMER:
    //=ОБРАБОТКА ТАЙМЕРОВ=
    {
    switch(wParam)
    {
    case TIMER://=ТАЙМЕР 1=
    {
    MessageBox(NULL, L"TIMER", L"OK", MB_OK);
    }
    }
    }
    case WM_DESTROY:
    //=ЗАВЕРШЕНИЕ РАБОТЫ ПРИЛОЖЕНИЯ=
    {
    KillTimer(hWnd,TIMER);
    ReleaseDC(hWnd, hDc);
    PostQuitMessage(0);
    return 0;
    }
    default:
    return (DefWindowProc(hWnd, msg,wParam,lParam));
    }
    }[/CODE]

    Вчера все заработало, только если таймер создается в условии оператора if

    Добавлено: Кто-нибудь может дать пример использования таймера?
     
  5. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
  6. SaV94

    SaV94 New Member

    Регистрация:
    2 ноя 2009
    Сообщения:
    3
    Симпатии:
    0
    Спасибо
     
Загрузка...
Похожие Темы - Таймер приложении Win32
  1. Shouldercannon
    Ответов:
    0
    Просмотров:
    635
  2. Aris
    Ответов:
    0
    Просмотров:
    996
  3. масенький
    Ответов:
    0
    Просмотров:
    1.115
  4. shilovec5377
    Ответов:
    0
    Просмотров:
    1.572
  5. shilovec5377
    Ответов:
    0
    Просмотров:
    1.200

Поделиться этой страницей