Classe CRefTime
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
La CRefTime
classe è una classe helper per la gestione dei tempi di riferimento.
Un tempo di riferimento è un'unità di tempo rappresentata in unità di 100 nanosecondi. Questa classe condivide lo stesso layout di dati del tipo di dati REFERENCE_TIME, ma aggiunge alcuni metodi e operatori che forniscono funzioni di confronto, conversione e aritmetica. Per altre informazioni sui tempi di riferimento, vedere Time and Clocks in DirectShow.
Variabili membro pubblico | Descrizione |
---|---|
m_time | Specifica il valore REFERENCE_TIME . |
Metodi pubblici | Descrizione |
CRefTime | Metodo del costruttore. |
GetUnits | Recupera il tempo di riferimento in unità di 100 nanosecondi. |
Millisecs | Converte il tempo di riferimento in millisecondi. |
Operatori | Descrizione |
operator REFERENCE_TIME() | Esegue il cast dell'oggetto a un tipo di dati REFERENCE_TIME . |
operator= | Assegna un nuovo tempo di riferimento. |
operator+= | Aggiunge due volte di riferimento. |
operator = | Sottrae una volta di riferimento da un'altra. |
Commenti
C'è un potenziale problema con l'uso di questa classe. Se si applica l'operatore += con un oggetto CRefTime come operando sinistro e una variabile di tipo LONG come operando destro, il compilatore coercherà in modo implicito l'operando destro in un oggetto CRefTime . Questa coercizione usa il costruttore CRefTime che converte i millisecondi in unità di REFERENCE_TIME; di conseguenza, l'operando destro viene moltiplicato per 10.000:
CRefTime rt; // rt.m_time is 0.
LONG val = 20;
rt += val; // Coerce val to CRefTime, rt.m_time is now 200,000.
Tuttavia, la stessa cosa non avviene usando l'operatore + :
CRefTime rt; // rt.m_time is 0.
LONG val = 20;
rt = rt + val; // CRefTime, rt.m_time is 20.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Libreria |
|