Condividi tramite


Funzione PropVariantToDouble (propvarutil.h)

Estrae il valore double da una struttura PROPVARIANT .

Sintassi

PSSTDAPI PropVariantToDouble(
  [in]  REFPROPVARIANT propvarIn,
  [out] DOUBLE         *pdblRet
);

Parametri

[in] propvarIn

Tipo: REFPROPVARIANT

Riferimento a una struttura PROPVARIANT di origine.

[out] pdblRet

Tipo: DOUBLE*

Quando questa funzione viene restituita, contiene il valore della proprietà estratta, se presente; in caso contrario, contiene 0.0.

Valore restituito

Tipo: HRESULT

Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Questa funzione helper viene usata in posizioni in cui l'applicazione chiamante prevede che un PROPVARIANT contenga un singolo valore a virgola mobile doppia. Ad esempio, un'applicazione che ottiene valori da un archivio proprietà può usarla per estrarre in modo sicuro un valore double per le proprietà double.

Se l'origine PROPVARIANT ha tipo VT_R8, questa funzione helper estrae il valore double. In caso contrario, tenta di convertire il valore nella struttura PROPVARIANT in un valore double. Se una conversione non è possibile, PropVariantToDouble restituirà un codice di errore e imposterà pdblRet su 0.0. Per un elenco delle conversioni possibili, vedere PropVariantChangeType . Si noti che VT_EMPTY viene convertito correttamente in 0,0.

Esempio

Nell'esempio seguente, da includere come parte di un programma più ampio, viene illustrato come usare PropVariantToDouble per accedere a un valore double in un PROPVARIANT.

// IPropertyStore *ppropstore;
// Assume variable ppropstore is initialized and valid
PROPVARIANT propvar = {0};
HRESULT hr = ppropstore->GetValue(PKEY_Image_HorizontalResolution, &propvar);
if (SUCCEEDED(hr))
{
     // PKEY_Image_HorizontalResolution is expected to produce a VT_R8 or VT_EMPTY value.
     // PropVariantToDouble will successfully convert VT_EMPTY to a 0.0.
     DOUBLE dblHorzResolution;
     hr = PropVariantToDouble(propvar, &dblHorzResolution);
     if (SUCCEEDED(hr))
     {
        // dblHorzResolution is now valid
     }
     else
     {
        // dblHorzResolution contains 0.0
     }
     PropVariantClear(&propvar);
}

Requisiti

   
Client minimo supportato Windows XP con SP2, Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2003 con SP1 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione propvarutil.h
Libreria Propsys.lib
DLL Propsys.dll (versione 6.0 o successiva)
Componente ridistribuibile Windows Desktop Search (WDS) 3.0

Vedi anche

InitPropVariantFromDouble

PropVariantGetDoubleElem

PropVariantToDoubleWithDefault

VariantToDouble