Creando IDL para la conversión MAPI-MIME
Pregunta
Estoy intentando crear el IDL para la interfaz IConverterSession y estoy confundido por la definición de MIMETOMAPI método.Se especifica el LPMESSAGE pmsg
parámetro como [out] pero los comentarios indican que es el puntero al mensaje MAPI que se va a cargar.
No me queda claro si las funciones asignan el objeto de mensaje MAPI y establecen el puntero, en cuyo caso ¿no debería ser un puntero a un puntero de MENSAJE?O se espera que el código de llamada ya haya creado una instancia del objeto de mensaje, en cuyo caso ¿por qué está marcado [fuera] y no [dentro]?
En última instancia, esta interfaz debe consumirse desde el código VB6, por lo que tendrá que estar [dentro] o [dentro, fuera] pero necesito saber si en el IDL que usé:
[in] IMessage pmsg*
O
[in, out] IMessage pmsg**
Solución
Creo que en este caso la documentación es engañosa cuando marca el parámetro como [out].Tienes que pasar un LPMESSAGE válido al método, y por eso no es un puntero doble.Entonces elegiría [in] en su definición de idl.
Otros consejos
Consulte MAPIMime.h de la fuente MFCMapi (http://mfcmapi.codeplex.com/) como fuente definitiva.