メインページ | ネームスペース一覧 | クラス階層 | 構成 | Directories | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ | 関連ページ

WBMMTimer.h

00001 #ifndef MMTIMER_H
00002 #define MMTIMER_H
00003 #if _MSC_VER >= 1000
00004 #pragma once
00005 #endif // _MSC_VER >= 1000
00006 #include "WBWin.h"
00007 namespace Spr {
00008 
00009 /** マルチメディアタイマー.
00010     タイマー動作中にデバッガを使うとOSが落ちるので,デバッグ用に
00011     スレッドによる擬似動作モードを用意してある.    */
00012 class SPR_DLL WBMMTimer{
00013     static int count;
00014     int tick;
00015     public:
00016     typedef void MMTimerFunc(void* arg);
00017 
00018     protected:
00019     static UINT resolution;     ///<    タイマーの時間精度
00020     UINT interval;              ///<    タイマーの時間間隔
00021     MMTimerFunc* func;          ///<    時間が来るたびに呼ばれるコールバック関数.
00022     void* arg;                  ///<    コールバック関数に渡す引数
00023     UINT timerID;
00024     volatile bool bCreated;     ///<    タイマーが動作しているかどうか
00025     volatile bool bThread;      ///<    タイマーがスレッドとして擬似動作しているかどうか
00026     volatile bool bRun;         ///<    コールバック関数が実行中かどうか
00027     HANDLE hThread;             ///<    擬似動作用スレッド
00028     static void CALLBACK TimerCallback(UINT uID, UINT, DWORD dwUser, DWORD, DWORD);
00029     static DWORD WINAPI ThreadCallback(void* arg);
00030     void BeginPeriod();
00031     void EndPeriod();
00032 
00033     public:
00034     volatile int heavy;
00035 
00036     WBMMTimer();                    ///<    コンストラクタ
00037     ~WBMMTimer();                   ///<    デストラクタ
00038     UINT Resolution();              ///<    タイマーの時間精度
00039     void Resolution(UINT res);      ///<    タイマーの時間精度の設定
00040     UINT Interval();                ///<    タイマーの時間間隔
00041     void Interval(UINT i);          ///<    タイマーの時間間隔の設定
00042     void Set(MMTimerFunc* f, void* arg);
00043                                     ///<    コールバック関数の設定
00044     bool Create();                  ///<    タイマー動作開始
00045     bool Thread();                  ///<    タイマー擬似動作開始
00046     bool IsCreated(){return bCreated;}
00047                                     ///<    タイマーが動作しているかどうか
00048     bool IsThread(){return bThread;}
00049                                     ///<    タイマーが擬似動作しているかどうか
00050     void Release();                 ///<    タイマーの停止
00051 };
00052 
00053 }   //  namespace Spr
00054 #endif

Springheadに対してSun Apr 16 01:57:58 2006に生成されました。  doxygen 1.4.1