Compartir a través de


Función PSFormatPropertyValue (propsys.h)

Obtiene una representación de cadena Unicode con formato de un valor de propiedad almacenado en un almacén de propiedades. Esta función asigna memoria para la cadena de salida.

Sintaxis

PSSTDAPI PSFormatPropertyValue(
  [in]  IPropertyStore        *pps,
  [in]  IPropertyDescription  *ppd,
  [in]  PROPDESC_FORMAT_FLAGS pdff,
  [out] LPWSTR                *ppszDisplay
);

Parámetros

[in] pps

Tipo: IPropertyStore*

Puntero a un IPropertyStore, que representa el almacén de propiedades del que se toma el valor de la propiedad.

[in] ppd

Tipo: IPropertyDescription*

Puntero a un IPropertyDescription, que representa la propiedad cuyo valor se está recuperando.

[in] pdff

Tipo: PROPDESC_FORMAT_FLAGS

Uno o varios PROPDESC_FORMAT_FLAGS que especifican el formato que se va a aplicar a la cadena de propiedad. Consulte PROPDESC_FORMAT_FLAGS para conocer los valores posibles.

[out] ppszDisplay

Tipo: LPWSTR*

Cuando la función devuelve , contiene un puntero al valor con formato como una cadena Unicode terminada en null.

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 usa el parámetro ppd para llamar a IPropertyDescription::FormatForDisplay. Esa llamada proporciona una representación de cadena Unicode de un valor de propiedad, con formato adicional basado en una o varias PROPDESC_FORMAT_FLAGS.

Debe inicializar el modelo de objetos componentes (COM) con CoInitialize o OleInitialize antes de llamar a PSFormatPropertyValue.

La función asigna memoria y devuelve un puntero a esa memoria en ppszDisplay. La aplicación que realiza la llamada debe usar CoTaskMemFree para liberar la cadena especificada por ppszDisplay cuando ya no se necesite.

El propósito de esta función es convertir los datos en una cadena adecuada para mostrar al usuario. El valor tiene el formato según la configuración regional actual, el idioma del usuario, el PROPDESC_FORMAT_FLAGS y la descripción de la propiedad especificada por la clave de propiedad. Para obtener información sobre cómo el esquema de descripción de propiedades influye en el formato del valor, vea los temas siguientes:

Normalmente, el PROPDESC_FORMAT_FLAGS se usa para modificar el formato prescrito por la descripción de la propiedad.

La cadena de salida puede contener caracteres direccionales Unicode. Estos caracteres sin espaciado influyen en el algoritmo bidireccional Unicode para que los valores aparezcan correctamente cuando se dibuja un idioma de izquierda a derecha (LTR) en una ventana de derecha a izquierda (RTL) o se dibuja una RTL en una ventana LTR. Estos caracteres incluyen lo siguiente: "\x200e", "\x200f", "\x202a", "\x202b", "\x202c", "\x202d", "\x202e".

Las siguientes propiedades usan formatos especiales y no se ven afectados por el PROPDESC_FORMAT_FLAGS. Tenga en cuenta que los ejemplos citados son para cadenas con una configuración regional actual establecida en inglés; Normalmente, la salida se localiza, excepto donde se indica.

Propiedad Formato
System.FileAttributes Los siguientes atributos de archivo se convierten en letras y se anexan para crear una cadena (por ejemplo, un valor de 0x1801 (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_COMPRESSED | FILE_ATTRIBUTE_OFFLINE) se convierte en "RCO"):
  • FILE_ATTRIBUTE_READONLY (0x00000001): "R"
  • FILE_ATTRIBUTE_SYSTEM (0x00000004): "S"
  • FILE_ATTRIBUTE_ARCHIVE (0x00000020) -'A'
  • FILE_ATTRIBUTE_COMPRESSED (0x00000800): "C"
  • FILE_ATTRIBUTE_ENCRYPTED (0x00004000): "E"
  • FILE_ATTRIBUTE_OFFLINE (0x00001000): "O"
  • FILE_ATTRIBUTE_NOT_CONTENT_INDEXED (0x00002000): "I"
System.Photo.ISOSpeed Por ejemplo, "ISO-400".
System.Photo.ShutterSpeed El valor de APEX se convierte en un tiempo de exposición mediante esta fórmula:

Exposure_time = 2^(-APEX_value)

Por ejemplo, "2 segundos". o "1/125 s.".

System.Photo.ExposureTime Por ejemplo, "2 segundos". o "1/125 s."
System.Photo.Aperture El valor de APEX se convierte en un número F mediante esta fórmula:

F_Number = 2^(APEX_Value / 2)

Por ejemplo, "f/5.6".

System.Photo.FNumber Por ejemplo, "f/5.6".
System.Photo.SubjectDistance Por ejemplo, "15 m" o "250 mm".
System.Photo.FocalLength Por ejemplo, "50 mm".
System.Photo.FlashEnergy Por ejemplo, "500 bpcs".
System.Photo.ExposureBias Por ejemplo, "-2 step", "0 step" o "+3 step".
System.Computer.DecoratedFreeSpace Por ejemplo, "105 MB libres de 13,2 GB".
System.ItemType Por ejemplo, "Application" o "JPEG Image".
System.ControlPanel.Category Por ejemplo, "Apariencia y personalización".
System.ComputerName Por ejemplo, "LITWARE05 (este equipo)" o "testbox07".
 

Si la clave de propiedad no corresponde a una descripción de propiedad en ninguno de los esquemas de propiedad registrados, esta función elige un formato basado en el tipo del valor.

Tipo del valor Formato
VT_BOOLEAN No compatible.
VT_FILETIME Cadena de fecha y hora especificada por PROPDESC_FORMAT_FLAGS y la configuración regional actual. PDFF_SHORTTIME y PDFF_SHORTDATE son el valor predeterminado. Por ejemplo, "11/13/2006 3:22 PM".
VARTYPE numérico Cadena decimal en la configuración regional actual. Por ejemplo, "42".
VT_LPWSTR u otros Convertido en una cadena. Las secuencias de "\r", "\t" o "\n" se reemplazan por un solo espacio.
VT_VECTOR | Nada Valores separados por punto y coma. Se usa un punto y coma independientemente de la configuración regional.
 

Ejemplos

En el ejemplo siguiente, para incluirse como parte de un programa más grande, se muestra cómo usar PSFormatPropertyValue para dar formato a un valor de clasificación.

// IPropertyStore *pStore;
// Assume the variable pps is initialized and valid.
IPropertyDescription *pPropDesc;

HRESULT hr = PSGetPropertyDescription(PKEY_Rating, IID_PPV_ARGS(&pPropDesc));

if (SUCCEEDED(hr))
{
    PWSTR pszValue;

    hr = PSFormatPropertyValue(pStore, pPropDesc, PDFF_DEFAULT, &pszValue);

    if (SUCCEEDED(hr))
    {
        // pszValue contains a formatted string similar to "3 stars".
        CoTaskMemFree(pszValue);
    }
    pPropDesc->Release();
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado propsys.h
Library Propsys.lib
Archivo DLL Propsys.dll (versión 6.0 o posterior)
Redistribuible Windows Desktop Search (WDS) 3.0

Consulte también

PSFormatForDisplay

PSFormatForDisplayAlloc

Esquema de descripción de propiedad