定期的にここに着きます。間隔はSetTimer関数で指定されます。また処理専用関数が指定されているときにはその関数のアドレスも送られてきます。
- wParam:
画幾つかのタイマーを起動してあるときのタイマー識別子(1から始めます)。
- lParam: 処理専用関数のアドレス
- TimerFunc = (TIMERPROC *)lParam;
8節へ戻る
タイマーを起動します。成功するとタイマー識別番号を返します。hWndがNULLのときはこの返された識別番号を指定します。
- hWnd:タイマーを設定するウィンドウズの名札
- nIDEvent: タイマー識別番号を指定します(1から始めます)
- uElapse: タイマーの刻み間隔をミリ秒単位で指定します(1000ミリ秒=1秒)
- lpTimerFunc: 一定時間に処理を実行する関数のアドレスを指定します。決まった引数を持ちますが関数名は自分で付けます。ここではTimerProc関数とします。
使用しなくなったらKillTimer関数でタイマーを破棄します。
- hwnd: タイマーを設定するウィンドウズの名札
- uMsg: WM_TIMERを指定
- idEvent: タイマー識別番号
- dwTime: システムの起動時よりの経過時間。内部でGetTickCount関数が使用されています。
5節へ戻る
指定されたタイマーを破棄します。
- hwnd: タイマーを設定するウィンドウズの名札
- idEvent: タイマー識別番号。SetTimer
関数で有効なウィンドウハンドルを渡したときは、SetTimer 関数の
uIDEvent パラメータで渡したタイマー ID
を指定しなければなりません。SetTimer 関数で hWndパラメータに NULL
を指定したときは、SetTimer 関数が返したタイマー ID
を指定しなければなりません。
使用例
//タイマー開始(idTimer値が異なれば、システムの許す限りいくつでもタイマーが起動できます) |
SetTimer(hWnd, idTimer, 100, &TimerProc); //タイマー処理関数:TimerProcの番地 |
|
//タイマー破棄(終了時にはdTimerのすべての値を用いて破棄します) |
KillTimer(hWnd, idTimer); |
システム(OS)起動時よりの経過時間をミリ秒単位でおしえてくれます。経過時間はDWORD(=unsigned
long)なので最大の正の数のミリ秒の約49.7日でゼロに戻ります。
- Windows NT 3.5以降:約10ミリ秒ごとにカウント
- Windows NT 3.1:約16ミリ秒ごとにカウント
- Windows 95 以降:約55ミリ秒ごとにカウント
また、Windows NTでは、コンピュータの起動時よりの経過時間はレジストリ内のHKEY_PERFORMANCE_DATAキーに8バイトの値として書かれています。
SYSTEMTIME
構造体は、月、日、年、曜日、時、分、秒、ミリ秒の各メンバを使用し日付と時間を表します:
- LPSYSTEMTIME=SYSTEMTIME * (Win32)
- SYSTEMTIME st; ⇒ LPSYSTEMTIME lpst = &st;
|
typedef struct _SYSTEMTIME{ |
|
|
|
WORD wYear; |
|
|
|
LONG wMonth; |
|
|
|
LONG wDayOfWeek; |
|
|
|
LONG wDay; |
|
|
|
LONG wHour; |
|
|
|
LONG wMinute; |
|
|
|
LONG wSecond; |
|
|
|
LONG wMilliseconds; |
|
|
} SYSTEMTIME |
|
|
|
|
- wYear:現在年
- wMonth:現在月。1 月は 1 です
- wDayOfWeek:現在の曜日。日曜が 0、月曜が 1、というように表します
- wDay:現在日
- wHour:現在時
- wMinute:現在分
- wSecond:現在秒
- wMilliseconds:現在のミリ秒
この構造体を利用するとGetLocalTime関数を使って現在の時間を知ることができる
現在のローカル日時を取得します。
- lpst:日時を格納するためのSYSTEMTIME構造体のアドレス
使用例
SYSTEMTIME st; |
|
GetLocalTime(&st); |
|