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