Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2011, 19:18   #1
insolent
Пользователь
 
Регистрация: 16.03.2009
Сообщений: 15
По умолчанию Waitable Timer

Необходимо с помощью Waitable Timer(таймера ожидания) организовать обновление контролов на форме. Как мне узнать, что таймер сработал?
Вот так я создам и устанавливаю таймер:
Код:
LRESULT CMainFrame::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
        // ..
        BOOL            bSuccess;
            __int64         qwDueTime;
            LARGE_INTEGER   liDueTime;
     
        // HANDLE hTimer обьявлен в private секции CMainFrame
        hTimer = CreateWaitableTimer(
               NULL,                  
               FALSE,                  
               TEXT("MyTimer"));      
            if (hTimer != NULL)
            {
           qwDueTime = -5 * 10000000; // первый раз таймер сработает через 5 сек после запуска
     
               liDueTime.LowPart  = (DWORD) ( qwDueTime & 0xFFFFFFFF );
               liDueTime.HighPart = (LONG)  ( qwDueTime >> 32 );
     
               bSuccess = SetWaitableTimer(
                  hTimer,          
                  &liDueTime,      
                  3 * 60 * 1000, // таймер будет срабатывать каждые 3 минуты            
                  NULL,    
                  NULL,        
                  FALSE );
            }
     
        // ..
     
        return 0;
 }
Можно было использовать APC, но ведь ф-ция сработает только если таймер в тревожном состоянии, т.е. ожидает этого в вызове SleepEx, WaitForSingleObjectEx, WaitForMultipleObjectsEx, MsgWaitForMultipteObjectsEx или SignalOkjeclAneiWait.

Как вариант использовать ф-цию:
Код:
BOOL CheckTimer (HANDLE hTimer)            
{
       DWORD RetC =::WaitForSingleObject(hTimer,0);
       if(WAIT_OBJECT_0 == RetC) return TRUE;
       return FALSE;
}
, но где мне её вызывать?
insolent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Timer... Teleport Общие вопросы Delphi 13 14.09.2011 17:02
timer Erick Cartman Помощь студентам 4 12.03.2010 19:57
Timer Arhangel_bes Помощь студентам 2 27.10.2008 17:55
timer ZYRGiX Помощь студентам 3 21.07.2008 15:15
timer Toxa Компоненты Delphi 6 06.12.2006 06:58