IMAPIFormAdviseSink::OnActivateNext
适用于:Outlook 2013 | Outlook 2016
指示窗体是否可以处理要显示的下一条消息的邮件类。
HRESULT OnActivateNext(
LPCSTR lpszMessageClass,
ULONG ulMessageStatus,
ULONG ulMessageFlags,
LPPERSISTMESSAGE FAR * ppPersistMessage
);
参数
lpszMessageClass
[in]指向下一条消息的消息类的指针。
ulMessageStatus
[in]从 PR_MSG_STATUS 复制的客户端定义标志或提供程序定义的标志的位掩码, (PidTagMessageStatus) 要显示的下一条消息的属性,该属性提供有关包含消息的内容表的状态信息。
ulMessageFlags
[in]指向从 PR_MESSAGE_FLAGS 复制的标志位掩码的指针, (PidTagMessageFlags) 要显示的下一条消息的属性,该属性指示消息的当前状态。
ppPersistMessage
[out]指向用于新窗体的表单对象的 IPersistMessage 实现(如果需要新窗体)的指针。 如果当前窗体对象可用于显示和保存下一条消息,则可以返回指向 NULL 的指针。
返回值
S_OK
通知成功,表单可以处理下一条消息。
S_FALSE
窗体不处理下一条消息的邮件类。
备注
表单查看者调用 IMAPIFormAdviseSink::OnActivateNext 方法来帮助表单确定是否可以在文件夹中显示下一封邮件。 下一条消息可以是任何类的消息,但通常是同一类或相关类的消息。 这使得客户端应用程序能够尽可能重用表单对象,从而更高效地读取同一类的多个消息。
大多数表单对象将使用 lpszMessageClass 参数指向的消息类来确定它们是否可以处理下一条消息。 通常,除了属于默认类的消息外,窗体还可以处理属于其默认类的类的消息。 但是,表单可以使用其他因素来确定是否可以处理消息,例如下一条消息的已发送或未发送状态。
针对实现者的说明
如果窗体可以处理消息类,则返回 ppPersistMessage 参数中的S_OK和 NULL。 如果窗体可以创建可以处理窗体无法处理的消息的新窗体,请执行以下步骤:
调用窗体的类工厂以创建新窗体对象的实例。
将实例存储在 ppPersistMessage 指针参数的内容中。
返回S_OK。
表单查看器将使用属于 ppPersistMessage 指向的对象的 IPersistMessage::Load 方法 加载消息。
如果可以创建的窗体和窗体都无法处理下一条消息,则返回 S_FALSE。 但是,一般情况下,窗体不应返回此值,因为它会导致表单查看器的性能下降。
MFCMAPI 引用
有关 MFCMAPI 示例代码,请参阅下表。
文件 | 函数 | Comment |
---|---|---|
MAPIFormFunctions.cpp |
CMyMAPIFormViewer::ActivateNext |
MFCMAPI 使用 IMAPIFormAdviseSink::OnActivateNext 方法实现 IMAPIViewContext::ActivateNext 方法。 |
另请参阅
IMAPIViewContext::ActivateNext