Compartir a través de


Método IPerPropertyBrowsing::GetPredefinedStrings (ocidl.h)

Recupera cadenas de descripción de matriz para los valores permitidos que la propiedad especificada puede aceptar.

Sintaxis

HRESULT GetPredefinedStrings(
  [in]  DISPID     dispID,
  [out] CALPOLESTR *pCaStringsOut,
  [out] CADWORD    *pCaCookiesOut
);

Parámetros

[in] dispID

Identificador de envío de la propiedad .

[out] pCaStringsOut

Puntero a una estructura de matriz asignada por el autor de la llamada que contiene el recuento de elementos y la dirección de una matriz asignada por métodos de punteros de cadena. Este método también asigna memoria para los valores de cadena que contienen los nombres predefinidos y almacena los punteros de cadena en la matriz. Si se produce un error en el método, no se asigna memoria y el contenido de la estructura no está definido.

[out] pCaCookiesOut

Puntero a la estructura de matriz asignada por el autor de la llamada que contiene el recuento de elementos y la dirección de una matriz asignada por métodos de valores DWORD . Los valores de la matriz se pueden pasar a IPerPropertyBrowsing::GetPredefinedValue para recuperar el valor asociado al nombre en la misma posición de matriz dentro de pCaStringsOut. Si se produce un error en el método, no se asigna memoria y el contenido de la estructura no está definido.

Valor devuelto

Este método puede devolver los valores devueltos estándar E_INVALIDARG, E_OUTOFMEMORY y E_UNEXPECTED, así como los siguientes valores.

Código devuelto Descripción
S_OK
El método se completó correctamente.
E_NOTIMPL
Este método no se implementa y no se admiten nombres predefinidos.
E_POINTER
La dirección de pCaStringsOut o pCaCookiesOut no es válida. Por ejemplo, cualquiera de los parámetros puede ser NULL.

Comentarios

Cada cadena devuelta en la matriz a la que apunta pCaStringsOut tiene un token coincidente en la matriz contada a la que apunta pCaCookiesOut, donde el token se puede pasar a IPerPropertyBrowsing::GetPredefinedValue para obtener el valor real ( un VARIANT) correspondiente a la cadena.

Con las cadenas predefinidas, un llamador puede obtener una lista de cadenas para rellenar elementos de la interfaz de usuario, como un cuadro de lista desplegable. Cuando el usuario final selecciona una de estas cadenas como un valor para asignar a una propiedad, el autor de la llamada puede obtener el valor correspondiente a través de IPerPropertyBrowsing::GetPredefinedValue.

Notas a los autores de llamadas

Las estructuras CALPOLESTR y CADWORD que se pasan a este método son asignadas por el autor de la llamada. El autor de la llamada es responsable de liberar cada cadena a la que apunta la matriz CALPOLESTR , así como la estructura CALPOLESTR .

Toda la memoria se asigna con CoTaskMemAlloc. El autor de la llamada es responsable de liberar las cadenas y la matriz con CoTaskMemFree.

Tras la devolución de este método, el autor de la llamada es responsable de toda esta memoria y debe liberarla cuando ya no sea necesaria. El código para lograrlo aparece de la siguiente manera.

CALPOLESTR     castr; 
CWDWORD        cadw; 
ULONG          i; 
 
pIPerPropertyBrowsing->GetPredefinedStrings(dispID, &castr, &cadw); 
 
//...Use the strings and the cookies 
 
CoTaskMemFree((void *)cadw.pElems); 
 
for (i=0; i < castr.cElems; i++) 
    CoTaskMemFree((void *)castr.pElems[i]); 
 
CoTaskMemFree((void *)castr.pElems); 

Notas para los implementadores

No se requiere compatibilidad con nombres y valores predefinidos. Si el objeto no admite estos nombres, devuelva E_NOTIMPL de este método. Si no se implementa este método, IPerPropertyBrowsing::GetPredefinedValue tampoco se debe implementar.

Este método rellena los miembros cElems y pElems de las estructuras CADWORD y CALPOLESTR . Asigna las matrices a las que apuntan estas estructuras con CoTaskMemAlloc y rellena esas matrices. En el caso CALPOLESTR , este método también asigna cada cadena con CoTaskMemAlloc, almacenando cada puntero de cadena en la matriz.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ocidl.h

Consulte también

CADWORD

CALPOLESTR

IPerPropertyBrowsing