Compartir a través de


Función PropVariantToDouble (propvarutil.h)

Extrae el valor doble de una estructura PROPVARIANT .

Sintaxis

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

Parámetros

[in] propvarIn

Tipo: REFPROPVARIANT

Referencia a una estructura PROPVARIANT de origen.

[out] pdblRet

Tipo: DOUBLE*

Cuando se devuelve esta función, contiene el valor de propiedad extraído si existe uno; de lo contrario, contiene 0,0.

Valor devuelto

Tipo: HRESULT

Si esta función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

Esta función auxiliar se usa en lugares donde la aplicación que realiza la llamada espera que un PROPVARIANT contenga un solo valor de punto flotante doble. Por ejemplo, una aplicación que obtiene valores de un almacén de propiedades puede usarla para extraer de forma segura un valor doble para las propiedades dobles.

Si el PROPVARIANT de origen tiene el tipo VT_R8, esta función auxiliar extrae el valor doble. De lo contrario, intenta convertir el valor de la estructura PROPVARIANT en un valor double. Si no es posible una conversión, PropVariantToDouble devolverá un código de error y establecerá pdblRet en 0.0. Consulte PropVariantChangeType para obtener una lista de las posibles conversiones. Tenga en cuenta que VT_EMPTY se convierte correctamente en 0,0.

Ejemplos

En el ejemplo siguiente, para incluirse como parte de un programa más grande, se muestra cómo usar PropVariantToDouble para tener acceso a un valor doble en 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);
}

Requisitos

   
Cliente mínimo compatible Windows XP con SP2, Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 con SP1 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado propvarutil.h
Library Propsys.lib
Archivo DLL Propsys.dll (versión 6.0 o posterior)
Redistribuible Windows Desktop Search (WDS) 3.0

Consulte también

InitPropVariantFromDouble

PropVariantGetDoubleElem

PropVariantToDoubleWithDefault

VariantToDouble