Thursday, February 21, 2008

時間表示プログラム

Chapter 4:
GetLocalTime(
  • LPSYSTEMTIME lpSystemTime
);
この関数で時間情報をシステムから取得し,構造体SystemTimeで保持する.
SystemTime構造:
typedef struct _SYSTEMTIME{
  • WORD wYear;
  • WORD wMonth;
  • WORD wDayOfWeek;
  • WORD wDay;
  • WORD wHour;
  • WORD wMinute;
  • WORD Second;
  • WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
時間取得するにはWindowsは駆動型だからシステムから定期的にあるメッセージが送られれてきて,このメッセージが来たら,時間を取得するという仕組みになっている.この定期的なメッセージが来るようにするにはSetTimer()関数を使用.
UINT_PTR SetTimer(
  • HWND hWnd,
  • UINT_PTR nIDEvent, // タイマID
  • UINT uElapse, // タイムアウト値 単位はミリセコンド
  • TIMERPROC lpTimerFunc //タイマのプロシージャ
);
最後のパラメータはNULLにするとhWndのプロシージャで処理することになる.
プロシージャへ送られるメッセージは副メッセージもやってくる.その副メッセージはプロシージャ引数の最後の2つであるWPARAM, LPARAMである.
WM_TIMERのときはwParamにはタイマID,lParamにはタイマのプロシージャのアドレス(SetTimer関数の第4引数)が入る.
タイマが不要になったらKillTimer()関数を使用.
BOOL KillTimer(
  • HWND hWnd,
  • UINT_PTR uIDEvent
);

No comments: