Compartir a través de


Función PropVariantToDoubleVector (propvarutil.h)

Extrae un vector de dobles de una estructura PROPVARIANT .

Sintaxis

PSSTDAPI PropVariantToDoubleVector(
  [in]  REFPROPVARIANT propvar,
  [out] DOUBLE         *prgn,
  [in]  ULONG          crgn,
  [out] ULONG          *pcElem
);

Parámetros

[in] propvar

Tipo: REFPROPVARIANT

Referencia a una estructura PROPVARIANT de origen.

[out] prgn

Tipo: DOUBLE*

Apunta a un búfer que contiene valores DOUBLE de crgn . Cuando se devuelve esta función, el búfer se ha inicializado con elementos dobles pcElem extraídos de la estructura PROPVARIANT de origen.

[in] crgn

Tipo: ULONG

Tamaño en elementos del búfer al que apunta prgn.

[out] pcElem

Tipo: ULONG*

Cuando se devuelve esta función, contiene el recuento de elementos dobles extraídos de la estructura PROPVARIANT de origen.

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 valor de vector doble con un número fijo de elementos.

Si el PROPVARIANT de origen tiene VT_VECTOR de tipo | VT_R8 o VT_ARRAY | VT_R8, esta función auxiliar extrae hasta valores dobles de crgn y los coloca en el búfer al que apunta prgn. Si el PROPVARIANT contiene más elementos de los que caben en el búfer prgn , esta función devuelve un error y establece pcElem en 0.

Ejemplos

// IPropertyStore *ppropstore;
// Assume variable ppropstore is initialized and valid
PROPVARIANT propvar = {0};
HRESULT hr = ppropstore->GetValue(PKEY_GPS_DestLongitude, &propvar);
if (SUCCEEDED(hr))
{
         // PKEY_GPS_DestLongitude is expected to produce a VT_VECTOR | VT_R8 with three values, or VT_EMPTY
         // PropVariantToDoubleVector will return an error for VT_EMPTY
         DOUBLE rgLongitude[3];
         ULONG cElem;
         hr = PropVariantToDoubleVector(propvar, &rgLongitude, ARRAYSIZE(rgLongitude), &cElem);
         if (SUCCEEDED(hr))
         {
                 if (cElem == ARRAYSIZE(rgLongitude))
                 {
                          // rgLongitude contains 3 doubles representing the degrees, minutes, and seconds of longitude
                 }
                 else
                 {
                          // The first cElem doubles from propvar are stored in the first 3 elements of rgLongitude
         }
         else
         {
                 // propvar either is VT_EMPTY, or contains something other than a vector of 3 doubles
         }
         PropVariantClear(&propvar);
}

Requisitos

Requisito Value
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

InitPropVariantFromDoubleVector

PropVariantGetDoubleElem

PropVariantToDouble

PropVariantToDoubleVectorAlloc

VariantToDoubleArray