Escribir código de servidor de formulario
Hace referencia a: Outlook 2013 | Outlook 2016
Puede considerar que un servidor de formularios es el siguiente:
Un programa Win32 que muestra una interfaz y controla los mensajes de Windows mediante los mecanismos estándar de bomba de mensajes de Windows.
Objeto que registra su generador de clases con OLE y se activa mediante métodos de automatización OLE.
Objeto MAPI que sigue las reglas MAPI para las interacciones con otros componentes MAPI.
El código tiene que controlar los tres requisitos generales simultáneamente.
Consulte la sección Servicios de objetos COM y ActiveX en el Windows SDK para obtener más información sobre cómo registrar el generador de clases del servidor de formularios. El control de mensajes de Windows y la visualización de una interfaz son técnicas de programación estándar de Windows que no tienen ningún requisito especial con respecto a los formularios MAPI. De nuevo, el Windows SDK tiene detalles sobre la programación de Windows. Este documento contiene lo que necesita saber para implementar las interfaces de formulario MAPI necesarias y opcionales para que sigan las reglas MAPI para las interacciones con otros componentes MAPI, principalmente el administrador de formularios MAPI y las aplicaciones cliente de mensajería.
Todas las interfaces que puede usar al implementar servidores de formularios se derivan directa o indirectamente de la clase base OLE IUnknown. Esto significa que todas las implementaciones de estas interfaces tendrán que tener métodos QueryInterface, AddRef y Release . Puede ahorrar mucho trabajo si usa varias herencias para implementar todas las interfaces necesarias en una nueva clase propia, de modo que todas las interfaces que use puedan compartir una única implementación de los métodos IUnknown necesarios. Para obtener más información, vea los métodos IUnknown::AddRef, IUnknown::QueryInterface y IUnknown::Release . No hay consideraciones especiales con respecto a los servidores de formulario MAPI para estos métodos.
Aunque no todas las interfaces de formulario MAPI son obligatorias para todos los servidores de formularios, los métodos de cualquier interfaz determinada son obligatorios. Es decir, si decide implementar una interfaz determinada, debe implementar todos los métodos de la interfaz. Esto es diferente de la situación con algunos otros componentes MAPI, como los transportes de mensajes. Afortunadamente, los métodos de las interfaces de formulario MAPI son relativamente sencillos, por lo que la implementación de todos ellos no supone una gran carga para los desarrolladores.
Las interfaces de formulario MAPI son independientes del tipo de herramienta de desarrollo que se usa para crear un servidor de formularios. Esto permite crear formularios mediante diferentes herramientas de desarrollo. El único requisito es que todos los servidores de formularios deben admitir las interfaces de formulario MAPI necesarias.
No todas las interfaces MAPI relacionadas con formularios son necesarias para todos los servidores de formularios. Las interfaces opcionales permiten implementar algunas funciones de formulario avanzadas que no son necesarias para la mayoría de los servidores de formularios. En la tabla siguiente se enumeran las interfaces, para qué son y si debe implementarlas.
Interfaz | Descripción | Estado |
---|---|---|
IMAPIForm : IUnknown |
Interfaz principal que los clientes usan para cargar servidores de formularios, ejecutar verbos de formulario y apagar servidores de formularios. Esta también es la interfaz derivada de OLE IUnknown que se usa para informar a otros componentes OLE sobre qué interfaces implementa un objeto de formulario. | Obligatorio |
IPersistMessage : IUnknown |
Se usa al cargar mensajes en y guardar mensajes de objetos de formulario. | Obligatorio |
IMAPIFormAdviseSink : IUnknown |
Lo usan los objetos de formulario para realizar un seguimiento del estado del cliente de mensajería y averiguar si el objeto de formulario es capaz de mostrar el mensaje siguiente o anterior en una carpeta. | Opcional |
IClassFactory |
Interfaz de fábrica de clases OLE utilizada por los objetos de formulario para el cumplimiento con el mecanismo de generador de clases OLE. | Obligatorio |
IMAPIFormFactory : IUnknown |
Se usa si el servidor de formularios admite más de un tipo de formulario. En este caso, la interfaz IMAPIFormFactory permite a las aplicaciones cliente acceder a las múltiples interfaces IClassFactory (una por tipo de formulario que admite el servidor de formularios) que el servidor de formularios también debe implementar. | Opcional |