Sdílet prostřednictvím


CWnd::SetTimer

Nainstaluje systémový časovač.

UINT_PTR SetTimer(
   UINT_PTR nIDEvent,
   UINT nElapse,
   void (CALLBACK* lpfnTimer
)(HWND,
   UINT,
   UINT_PTR,
   DWORD
) 
);

Parametry

  • nIDEvent
    Určuje identifikátor nenulovým časovače.Pokud je jedinečný identifikátor časovač, stejná hodnota vrácena SetTimer .Jinak SetTimer Určuje novou jedinečnou hodnotu a vrátí.Okno časovač (který má funkci zpětného volání NULL) musí být jedinečný pouze v případě jiných windows časovače, které jsou spojeny s aktuální okno.Zpětné volání časovače hodnota musí být jedinečná pro všechny časovače ve všech procesů.Proto při vytváření zpětné volání časovače je pravděpodobnější, že vrácená hodnota lišit od zadané hodnotě.

  • nElapse
    Určuje hodnotu časového limitu nebo interval v milisekundách.

  • lpfnTimer
    Určuje adresu poskytované aplikací TimerProc funkci zpětného volání, která zpracovává WM_TIMER zprávy.Pokud je tento parametr NULL , WM_TIMER jsou zprávy umístěny do fronty zpráv aplikace a zpracována CWnd objektu.

Vrácená hodnota

Identifikátor nové časovač, pokud je úspěšná funkce časovače.Tato hodnota může nebo nemusí být rovna hodnotě prošla v nIDEvent parametr.Aplikace by měly vždy předat vrácenou hodnotu KillTimer členské funkce usmrcení časovač.Nenulová hodnota, pokud je úspěšná. jinak, 0.

Poznámky

Je určena hodnotou intervalu a pokaždé, když uplyne, odešle systému WM_TIMER zprávy do fronty zpráv instalace instalace aplikace nebo odesláním do definované aplikací TimerProc funkci zpětného volání.

lpfnTimer Funkci zpětného volání nemusí s názvem TimerProc , ale musí být udána jako statické a definovaná takto.

void CALLBACK TimerProc(
   HWND hWnd,      // handle of CWnd that called SetTimer
   UINT nMsg,      // WM_TIMER
   UINT_PTR nIDEvent,   // timer identification
   DWORD dwTime    // system time
);

Příklad

V tomto příkladu CWnd::SetTimer , CWnd::OnTimer , a CWnd::KillTimer ke zpracování WM_TIMER zprávy.Odeslat první timer nastavena WM_TIMER zprávy do okna Hlavní rámec každé 2 sekundy v OnStartTimer . OnTimer Úchyty obslužné rutiny události WM_TIMER zprávy v okně hlavní rámec.Tato metoda vyvolá reproduktoru počítače pípnutí každé 2 sekundy.Druhý timer odešle zprávu každých sekund 37.5 funkci zpětného volání.OnStopTimerZastaví oba časovače voláním CWnd::KillTimer pro každé ID časovače.

void CMainFrame::OnStartTimer() 
{
    // This timer uses a WM_TIMER message, not a callback.
    // Therefore, the timer is specific to this window.
    // m_nWindowTimer is a UINT_PTR field.
    m_nWindowTimer = SetTimer(1, 2000, NULL);
    
    // For this demo, we specify an interval that won't overlap
    // with the window timer.
    m_nCallbackTimer = SetTimer(2, 3750, &CMainFrame::MyTimerProc);
    
    // See whether we got the ID we requested in the first parameter.
#ifdef _DEBUG
    CString str;
    str.Format(_T("m_ncallbackTImer ID = %d"), m_nCallbackTimer);
    TRACE(str);
#endif

}

 void CALLBACK CMainFrame::MyTimerProc(
   HWND hWnd,      // handle of CWnd that called SetTimer
   UINT nMsg,      // WM_TIMER
   UINT_PTR nIDEvent,   // timer identification
   DWORD dwTime    // system time
)
{
     MessageBeep(0x00000030L);   // Windows question sound.
}

void CMainFrame::OnStopTimer() 
{
   KillTimer(m_nWindowTimer);   
   KillTimer(m_nCallbackTimer);   
}

void CMainFrame::OnTimer(UINT nIDEvent) 
{
   MessageBeep(0xFFFFFFFF);   // Beep


   // Call base class handler.
   CMDIFrameWnd::OnTimer(nIDEvent);
}

Požadavky

Záhlaví: afxwin.h

Viz také

Referenční dokumentace

Třída CWnd

Diagram hierarchie

WM_TIMER

CWnd::KillTimer

SetTimer