CWnd::SetTimer
更新 : 2010 年 6 月
システム タイマーをインストールします。
UINT_PTR SetTimer(
UINT_PTR nIDEvent,
UINT nElapse,
void (CALLBACK* lpfnTimer
)(HWND,
UINT,
UINT_PTR,
DWORD
)
);
パラメーター
nIDEvent
0 以外のタイマー識別子を指定します。 タイマー識別子が一意の場合は、この同じ値によって返されるSetTimer。 それ以外の場合、SetTimer新しい一意の値を決定しを返します。 (が NULL コールバック関数)、ウィンドウ タイマーの値が、現在のウィンドウに関連付けられている他の windows タイマーだけを一意である必要があります。 コールバックのタイマーを値はすべてのプロセスのすべてのタイマーを一意なければなりません。 したがって、コールバック タイマーを作成すると、指定した値から返される値が異なる場合が多いです。nElapse
タイムアウト値、または間隔をミリ秒単位で指定します。lpfnTimer
アプリケーション提供のアドレスTimerProcを処理するコールバック関数をWM_TIMERメッセージ。 このパラメーターがNULL、WM_TIMERメッセージをアプリケーションのメッセージ キューに配置され、処理、CWndオブジェクト。
戻り値
正常終了した場合は、新しいタイマーのタイマー識別子を返します。 この値ことがありますまたはを通じて、渡された値に等しいことがあります、nIDEventパラメーター。 アプリケーションは常に戻り値を渡す必要があります、KillTimerメンバー関数、タイマーを殺すために。 正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
間隔値を指定して、間隔が経過するたびに、システムが post をWM_TIMERはインストールするアプリケーションのインストールのメッセージ キューへのメッセージか、アプリケーション定義には、メッセージを渡すTimerProcコールバック関数。
lpfnTimerコールバック関数を指定する必要がありますTimerProc、しかし、それは静的と定義されているように宣言する必要があります。
void CALLBACK TimerProc(
HWND hWnd, // handle of CWnd that called SetTimer
UINT nMsg, // WM_TIMER
UINT_PTR nIDEvent, // timer identification
DWORD dwTime // system time
);
使用例
この例を使用してCWnd::SetTimer、CWnd::OnTimer、およびCWnd::KillTimerを処理するWM_TIMERメッセージ。 送信する最初のタイマーが設定されている、WM_TIMERメッセージをメイン フレーム ウィンドウが 2 秒間隔でOnStartTimer。 OnTimerイベント ハンドラー ハンドルWM_TIMER、メイン フレーム ウィンドウのメッセージを。 このメソッドは、PC スピーカーの 2 秒ごとにビープ音が発生します。 2 番目のタイマーでは 37. 5 秒ごとのコールバック関数にメッセージが送信されます。 OnStopTimer呼び出すことによって両方のタイマを停止するCWnd::KillTimerの各タイマーの id。
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);
}
必要条件
ヘッダー: afxwin.h
参照
参照
概念
履歴の変更
日付 |
History |
理由 |
---|---|---|
2010 年 6 月 |
UINT_PTR、3 番目のパラメーターに使用するコールバック関数のシグネチャを修正しました。 例はコールバックのタイマーを追加します。 |
カスタマー フィードバック |