Compartir a través de


Implementación de objetos de control

Hace referencia a: Outlook 2013 | Outlook 2016

Los proveedores implementan objetos de control o objetos que admiten la interfaz IMAPIControl : IUnknown para agregar funcionalidad a un botón que aparece en un cuadro de diálogo MAPI. Los objetos de control solo se pueden implementar para botones.

IMAPIControl tiene tres métodos: GetLastError, GetState y Activate.

MAPI llama a GetState para determinar si se va a deshabilitar o no el botón. Se llama a GetState en las situaciones siguientes:

  • Cuando se muestra por primera vez el cuadro de diálogo en el que aparece el botón.

  • Cuando se emite una notificación de tabla para mostrar para el botón.

Establezca el contenido del parámetro lpulState en MAPI_DISABLED si el usuario no puede interactuar con el botón y MAPI_ENABLED si el usuario puede interactuar.

Cuando el usuario hace clic en el botón, MAPI llama a Activate. Activate realiza la tarea que se ha asociado al botón. Esta tarea puede ser cualquier cosa adecuada para el proveedor, como mostrar un cuadro de diálogo o actualizar una propiedad. Si la tarea no se realiza correctamente porque el usuario la canceló, devuelva MAPI_E_USER_CANCEL. Para otras causas de error, devuelva el valor de error adecuado.

Si la tarea se realiza correctamente y está vinculada a un cambio de propiedad que se refleja en otro control del cuadro de diálogo, llame a ITableData::HrNotify. Se llama a HrNotify para emitir una notificación de tabla para mostrar con la propiedad PR_CONTROL_ID (PidTagControlId) de la propiedad modificada en la estructura TABLE_NOTIFICATION. No coloque el nuevo valor de propiedad en la estructura; en su lugar, devuévalo cuando se llame a IMAPIProp::GetProps . Aunque normalmente no se puede usar una notificación de tabla para mostrar para deshabilitar o habilitar un control, se puede usar con un botón. MAPI actualizará el control modificado para responder a la notificación.

MAPI llama al método GetLastError del control cuando Activate devuelve un error distinto de MAPI_E_USER_CANCEL. Si GetLastError coloca información de error extendida en la estructura MAPIERROR que devuelve en el contenido de the_lppMAPIError_ parámetro, MAPI la muestra para el usuario.

Vea también

Proveedores de servicios MAPI