次の方法で共有


CRefTime クラス

CRefTime クラスの階層

CRefTime クラスは、基準タイムを管理するためのヘルパー クラスである。

基準タイムは 100 ナノ秒単位で表現される時間の単位である。このクラスは REFERENCE_TIME データ型と同じデータ レイアウトを共有するが、比較や変換や数式関数を提供するいくつかのメソッドと演算子が追加されている。基準タイムの詳細については、「DirectShow のタイムとクロック」を参照すること。

このクラスの使い方には、ある落とし穴がある。左オペランドとして CRefTime オブジェクトと共に += 演算子を適用し、右オペランドとして LONG 型の変数を使うと、コンパイラは暗黙的に右オペランドを CRefTime オブジェクトに強制変換する。この強制型変換は、ミリ秒を REFERENCE_TIME 単位に変換する CRefTime コンストラクタを使うため、右オペランドは 10,000 倍になる。

CRefTime rt;   // rt.m_time は 0。
LONG val = 20;
rt += val;    // val を CRefTime に強制変換する。rt.m_time は 200,000 になる。

しかし、+ 演算子を使う場合はこのことは発生しない。

CRefTime rt;   // rt.m_time は 0。
LONG val = 20;
rt = rt + val; // CRefTime, rt.m_time は 20。

要件

ヘッダー : Reftime.h 内で宣言し、Streams.h をインクルードする。

ライブラリ : Strmbase.lib (リテール ビルド) または Strmbasd.lib (デバッグ ビルド) を使う。

パブリック メンバ変数  
m_time REFERENCE_TIME 値を指定する。
パブリック メソッド  
CRefTime コンストラクタ メソッド。
GetUnits 基準タイムを取得する (100 ナノ秒単位)。
Millisecs 基準タイムをミリ秒に変換する。
演算子  
operator REFERENCE_TIME() オブジェクトを REFERENCE_TIME データ型にキャストする。
operator = 新しい基準タイムを割り当てる。
operator += 2 つの基準タイムを加算する。
operator -= ある基準タイムからもう 1 つの基準タイムを引く。