SetTimer

指定されたタイムアウト値を持つタイマーを作成します。

UINT_PTR SetTimer(
    HWND      hWnd,      // window handle
    UINT_PTR  nIDEvent,  // timer ID
    UINT      uElapse,   // time-out value
    TIMERPROC pTimerFunc // callback function
);

USER32.DLL

引数

hWnd

タイマーを関連付けるウィンドウのハンドルを指定します。このウィンドウは呼び出しスレッドが所有するウィンドウでなければいけません。

このパラメータに0 (NULL) を指定すると、ウィンドウがタイマーに関連付けられません。このとき、nIDEventパラメータは無視されます。

nIDEvent

0以外のタイマーIDを指定します。

hWndパラメータに0 (NULL) を指定すると、このパラメータは無視されます。hWndパラメータが0 (NULL) 以外で、hWndが指すウィンドウにタイマーIDがnIDEventであるタイマーが既に存在する場合には、既存のタイマーが新しいタイマーに置き換えられます。タイマーが置き換えられると、そのタイマーはリセットされます。そのため、メッセージは新しいタイムアウト値が経過した後に送信されます。以前に設定されていたタイムアウト値は無視されます。

uElapse

タイムアウト値をミリ秒単位で指定します。

Windows NT/2000/XP: このパラメータが0x7fffffffより大きい場合、タイムアウト値は1に設定されます。

Windows 2000/XP: このパラメータが10未満の場合、タイムアウト値は10に設定されます。

Windows Server 2003: このパラメータが0x7fffffffより大きい場合、タイムアウト値は0x7fffffffに設定されます。

pTimerFunc

タイムアウト値が経過した際に通知されるTimerProcコールバック関数へのポインタを指定します。

このパラメータに0 (NULL) を指定すると、システムはアプリケーションキューにWM_TIMERメッセージをポストします。このメッセージのMSG構造体のhwndメンバにはhWndパラメータの値が格納されます。

戻り値

hWnd0 (NULL) を指定し、関数が成功すると、戻り値として新しいタイマーを識別する整数値が返ります。アプリケーションはKillTimer関数にこの値を渡してタイマーを破棄することができます。

hWnd0 (NULL) 以外の値を指定し、関数が成功すると、戻り値として0以外の整数値が返ります。アプリケーションはKillTimer関数にnIDEventパラメータの値を渡してタイマーを破棄することができます。

タイマーの作成に失敗すると、戻り値として0が返ります。拡張エラー情報を取得するには、GetLastError関数を使います。

解説

アプリケーションはウィンドウプロシージャでWM_TIMERメッセージに対する処理を記述することにより、もしくはタイマー作成時にTimerProcコールバック関数を指定することにより、タイマーメッセージを処理することができます。TimerProcコールバック関数を指定すると、デフォルトウィンドウプロシージャがWM_TIMERメッセージを処理する際にコールバック関数が呼び出されます。そのため、WM_TIMERメッセージを処理せずにTimerProcコールバック関数を使用する場合でも、呼び出しスレッドでメッセージをディスパッチする必要があります。

WM_TIMERメッセージのwParamパラメータには、この関数のnIDEventパラメータの値が指定されます。

nIDEventパラメータのタイマーIDは、関連付けられるウィンドウごとに固有の値です。ウィンドウは、他のウィンドウが所有するタイマーのIDと同じタイマーIDを持つタイマーを所有することができます。

hWndパラメータが0 (NULL) の場合、システムがタイマーIDを再利用する可能性があります。

対応情報

Windows 95 以降 / Windows NT 3.1 以降