Aracılığıyla paylaş


CWnd::SetTimer

Sistem süreölçeri yükler.

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

Parametreler

  • nIDEvent
    Sıfır olmayan timer tanımlayıcısını belirtir.Timer tanımlayıcı benzersizdir, bu aynı değeri tarafından döndürülen SetTimer.Aksi takdirde, SetTimer , döner ve yeni benzersiz bir değer belirler.İçin (null geri çağrı işlevi olan) bir pencere süreölçer değeri yalnızca geçerli pencere ile ilişkili olan diğer windows zamanlayıcılar için benzersiz olmalıdır.Bir geri çağrı zamanlayıcı değeri için tüm sayaçları tüm işlemler içinde benzersiz olmalıdır.Geri arama timer oluşturduğunuzda, bu nedenle, döndürülen değer, belirttiğiniz değerle farklılık gösterebilir daha yüksektir.

  • nElapse
    Zaman aşımı değeri veya aralığı milisaniye cinsinden belirtir.

  • lpfnTimer
    Uygulama tarafından sağlanan adresini belirtir TimerProc işler geri çağrı işlevi WM_TIMER iletileri.Bu parametre ise NULL, WM_TIMER iletileri uygulama ileti sırasına yerleştirilecek ve tarafından ele CWnd nesnesi.

Dönüş Değeri

İşlev başarılı olursa yeni timer süreölçer tanıtıcısı.Bu değer olabilir veya üzerinden geçirilen değere eşit olamaz nIDEvent parametresi.Bir uygulama dönüş değeri her zaman geçmesi KillTimer üye işlev timer sonlandırılır.Başarılı olursa sıfırdan farklı; Aksi takdirde, 0.

Notlar

Bir aralık değeri belirtilmiş ve aralığı sona erdiğinde her zaman sistem nakleder bir WM_TIMER uygulamaya yüklenen ileti sırasına iletisi veya bir uygulama tarafından tanımlanan için geçirmeden TimerProc geri çağırma işlevi.

lpfnTimer Geri çağırma işlevi adlandırılmamış TimerProc, ancak onu statik ve tanımlanmış olarak şu şekilde bildirilmesi gerekir.

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

Örnek

Bu örnek CWnd::SetTimer, CWnd::OnTimer, ve CWnd::KillTimer ele almak için WM_TIMER iletileri.Göndermek için ilk timer ayarlanmış bir WM_TIMER ana çerçeve penceresi her 2 saniyede ileti OnStartTimer.OnTimer Olay işleyicisini işleme WM_TIMER ana çerçeve penceresi için iletileri.Bu yöntem, her 2 saniyede bir bip sesi çıkarmasını pc hoparlör olur.İkinci timer, 37.5 her saniye geri çağrı işlevi için bir ileti gönderir.OnStopTimerHer iki süreölçer çağırarak Dur CWnd::KillTimer için her süreölçer kimliği.

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);
}

Gereksinimler

Başlık: afxwin.h

Ayrıca bkz.

Başvuru

CWnd Sınıfı

Hiyerarşi grafik

WM_TIMER

CWnd::KillTimer

SetTimer