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 |
---|---|
|
El método se completó correctamente. |
|
Este método no se implementa y no se admiten nombres predefinidos. |
|
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 |