Compartir a través de


IPersistMessage::InitNew

Hace referencia a: Outlook 2013 | Outlook 2016

Inicializa un nuevo mensaje.

HRESULT InitNew(
  LPMAPIMESSAGESITE pMessageSite,
  LPMESSAGE pMessage
);

Parameters

pMessageSite

[in] Puntero al sitio del mensaje que el formulario usará para trabajar con el mensaje en el visor.

pMessage

[in] Puntero al nuevo mensaje.

Valor devuelto

S_OK

El nuevo mensaje se inicializó correctamente.

Comentarios

Los visores de formularios llaman al método IPersistMessage::InitNew cuando el usuario escribe un nuevo mensaje que pertenece a una clase de mensaje que controla el formulario. Si el objeto de formulario tiene un puntero de interfaz de usuario válido, se debe mostrar la interfaz de usuario para el objeto de mensaje.

No se debe llamar a InitNew cuando el formulario está en cualquier estado excepto el estado Sin inicializar. Si el formulario está en uno de los otros estados cuando se llama a InitNew , devuelva E_UNEXPECTED.

Notas a los implementadores

Normalmente, los mensajes que tienen propiedades no guardadas se marcan como modificados para que el cliente pueda mostrar un cuadro de diálogo que pregunte al usuario si se deben guardar estas propiedades. Si el usuario indica que se debe guardar un mensaje, guarde los datos, marque el mensaje como limpio y salga con normalidad.

Sin embargo, si el procesamiento de los mensajes recién inicializados incluye establecer una o más propiedades calculadas y es importante que esas propiedades se guarden, no marque los mensajes como modificados. Dado que las propiedades calculadas deben ser invisibles para los usuarios, no se debe mostrar ningún cuadro de diálogo.

Si el formulario tiene una referencia a un sitio de mensaje activo distinto del que se pasa a InitNew, libere el sitio original porque ya no se usará. Almacene los punteros al sitio del mensaje y al mensaje desde los parámetros pMessageSite y pMessage y llame a los métodos IUnknown::AddRef de ambos objetos para incrementar sus recuentos de referencias.

Establezca las propiedades PR_MESSAGE_FLAGS (PidTagMessageFlags) y PR_MSG_STATUS (PidTagMessageStatus) del nuevo mensaje en algo adecuado para la clase de mensaje. Muchas clases de mensajes, por ejemplo, establecen PR_MESSAGE_FLAGS en MSGFLAG_UNSENT para los mensajes nuevos.

Antes de devolver, realice la transición del formulario al estado Normal si no se ha producido ningún error. Envíe una nueva notificación de mensaje a todos los visores registrados mediante una llamada a sus métodos IMAPIViewAdviseSink::OnNewMessage y devuelva S_OK.

Notas para los llamadores

Después de realizar una llamada correcta a InitNew, puede suponer que las siguientes propiedades necesarias, y ninguna otra, se han establecido para el formulario:

PR_DELETE_AFTER_SUBMIT (PidTagDeleteAfterSubmit)

PR_IMPORTANCE (PidTagImportance)

PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED (PidTagOriginatorDeliveryReportRequested)

PR_PRIORITY (PidTagPriority)

PR_READ_RECEIPT_REQUESTED (PidTagReadReceiptRequested)

PR_SENSITIVITY (PidTagSensitivity)

PR_SENTMAIL_ENTRYID (PidTagSentMailEntryId)

Para obtener más información sobre los estados de los formularios, vea Estados de formulario. Para obtener más información sobre cómo se inicializan los objetos de almacenamiento, vea el método IPersistStorage::InitNew .

Vea también

IPersistMessage : IUnknown