1. ホーム
  2. Windows

SetTimer(タイマー)のいくつかの使い方

2022-02-16 15:54:37
UINT_PTR SetTimer(



 HWND hWnd, // ウィンドウのハンドル



UINT_PTR nIDEvent, // タイマーID。複数のタイマーがある場合に、どのタイマーを使用するかを決定するために使用されることがあります。



UINT nElapse, // 時間間隔、ミリ秒単位



TIMERPROC lpTimerFunc // コールバック関数



);



戻り値



型:UINT_PTR



この関数が成功し、hWndパラメータが0であれば、新しく作成されたクロック番号が返され、それをKillTimerに渡してクロックを破壊することができます。



この関数が成功し、hWndパラメータが0以外の場合、0以外の整数が返され、これをKillTimerに渡すことでクロックを破壊することができます。



関数が失敗した場合、戻り値は0です。エラーの詳細情報を得るには、GetLastError 関数を呼び出します。











TIMERPROC lpTimerFunc // コールバック関数が呼び出せるようにしておく。試してみてください、私も試していません 











方法1



これは、Windowsがアプリケーションの通常のウィンドウメッセージハンドラにWM_TIMERメッセージを送信する最も便利な方法の1つで、SetTimerの呼び出しは次のようになります。



SetTimer (hwnd, 1, uiMsecInterval, NULL) ;        



最初のパラメータは、WM_TIMER メッセージを受信するウィンドウメッセージハンドラのウィンドウハンドルです。2番目のパラメータはタイマーIDで、0以外の値で、この例では1と仮定しています。3番目のパラメータは32ビットの整数で、プラスもマイナスもなく、ミリ秒単位で時間間隔を指定し、6万という値はWindowsに1分間に1回WM_TIMERメッセージを送信させます。



間隔を指定するには



KillTimer (hwnd, 1) ;











方法2



タイマーを設定する最初の方法は、WM_TIMERメッセージを通常のウィンドウメッセージハンドラーに送る方法です。一方、2番目の方法は、Windowsがタイマーメッセージをプログラムの別の関数に直接送る方法です。



SetTimer (hwnd, iTimerID, iMsecInterval, TimerProc) ;











方法3



3番目のタイマー設定方法は、2番目の方法と似ていますが、SetTimerに渡されるhwndパラメータをNULLに設定し、2番目のパラメータ(通常はタイマーID)を無視し、最後にこの関数が次のようにタイマーIDを返します。



iTimerID = SetTimer (NULL, 0, wMsecInterval, TimerProc) ;        



利用可能なタイマーがない場合、SetTimerから戻されるiTimerIDの値はNULLになります。



KillTimerの最初のパラメータ(通常はウィンドウ・ハンドル)もNULLでなければならず、タイマーIDはSetTimer:から戻される値でなければなりません。



KillTimer (NULL, iTimerID) ;











注:タイマーはメッセージを受け取るスレッドキューに依存するため、SetTimer関数を呼び出すスレッドが存在する必要があります。