Implementación de búsqueda avanzada
Hace referencia a: Outlook 2013 | Outlook 2016
Algunos contenedores de libreta de direcciones admiten una funcionalidad de búsqueda avanzada que permite a los clientes buscar en propiedades distintas de PR_DISPLAY_NAME (PidTagDisplayName). Para admitir búsquedas avanzadas, el proveedor debe implementar un contenedor especial al que se pueda acceder a través de la propiedad PR_SEARCH (PidTagSearch) de los demás contenedores. PR_SEARCH contiene un objeto de contenedor que proporciona acceso a una tabla para mostrar que describe el cuadro de diálogo usado para escribir y editar los criterios de búsqueda avanzada.
Para admitir la búsqueda avanzada
Defina una propiedad para cada uno de los criterios de búsqueda.
En la sección de código del método IMAPIProp::OpenProperty del contenedor que controla la propiedad PR_SEARCH :
Compruebe que el cliente solicita la interfaz IMAPIContainer . Si se solicita una interfaz inapropiada, se produce un error y se devuelve MAPI_E_INTERFACE_NOT_SUPPORTED.
Cree un nuevo objeto de búsqueda que admita la interfaz IMAPIContainer .
En este momento, se realizará una llamada al método IMAPIProp::OpenProperty del contenedor de búsqueda para recuperar su propiedad PR_DETAILS_TABLE (PidTagDetailsTable). El proveedor debe proporcionar una tabla para mostrar, normalmente a través de una llamada a BuildDisplayTable, que describa el cuadro de diálogo de búsqueda avanzada del contenedor.
MAPI muestra el cuadro de diálogo de búsqueda, lo que permite al usuario especificar los criterios adecuados. Cuando el usuario ha terminado, MAPI llama al método IMAPIProp::SetProps del contenedor para almacenar los criterios de búsqueda.
Se realizará una llamada para solicitar la tabla de contenido del contenedor de búsqueda. Rellene la tabla de contenido con todas las entradas del contenedor que coincidan con los criterios.