共用方式為


IMAPIAdviseSink::OnNotify

適用於:Outlook 2013 |Outlook 2016

執行一或多個工作來回應通知。 執行的工作取決於事件的類型和產生通知的物件。

ULONG OnNotify(
  ULONG cNotif,
  LPNOTIFICATION lpNotifications
);

參數

cNotif

[in]lpNotifications 參數所指向的通知結構計數。

lpNotifications

[in]一或多個 NOTIFICATION 結構的指標,提供已發生事件的相關信息。

傳回值

S_OK

已成功處理通知。

註解

當用戶端或MAPI呼叫服務 提供者的Advise 方法來註冊以接收特定物件之特定類型的通知時,就會開始通知程式。 Advise 方法的其中一個參數是實作 IMAPIAdviseSink 介面之建議接收物件的指標。 當事件發生在對應至已註冊通知的目標物件時,服務提供者會直接或間接透過MAPI呼叫建議接收器的 OnNotify 方法。

對 OnNotify 的呼叫可能會在造成事件的 MAPI 呼叫期間或稍後發生。 在支援多個執行線程的系統上,可以在用於註冊的相同線程上或在不同的線程上呼叫 OnNotify 。 用戶端可以確定 OnNotify 呼叫是在 用來呼叫 Advise 的相同線程上進行,方法是建立其 傳遞至具有HrThisThreadAdviseSink 函式的建議接收器。

lpNotifications 參數指向一或多個 NOTIFICATION 結構,描述事件期間變更的內容。 每種事件類型都有不同類型的 NOTIFICATION 結構。

下表列出用來表示可能事件類型的值,以及與每個值相關聯的結構:

通知事件類型 對應的結構
fnevCriticalError
ERROR_NOTIFICATION
fnevNewMail
NEWMAIL_NOTIFICATION
fnevObjectCreated
OBJECT_NOTIFICATION
fnevObjectDeleted
OBJECT_NOTIFICATION
fnevObjectModified
OBJECT_NOTIFICATION
fnevObjectCopied
OBJECT_NOTIFICATION
fnevSearchComplete
OBJECT_NOTIFICATION
fnevTableModified
TABLE_NOTIFICATION
fnevStatusObjectModified
STATUS_OBJECT_NOTIFICATION
fnevExtended
EXTENDED_NOTIFICATION

如需如何設定和停止通知的詳細資訊,請參閱下列任何介面的 Advise 和Unadvise 方法參考專案: IABLogonIAddrBookIMAPIFormIMAPISessionIMAPITableIMsgStoreIMSLogon

如需通知程式的一般資訊,請參閱 MAPI中的事件通知

實作者注意事項

您的 OnNotify 實作通常會針對您預期收到的每種通知類型,包含一或多個程式代碼區塊。 在這些程式代碼區塊中,執行您認為必要的任何工作作為通知的回應。 例如,假設您註冊在對話框顯示中包含的資料夾上接收 fnevObjectModified 通知。 在您包含在 OnNotify 方法中以處理 fnevObjectModified 通知的程式代碼區塊中,您可以將 Windows 訊息傳送至對話方塊,以要求更新的顯示。

請勿修改或釋放傳遞OnNotify 的通知結構。 結構中的數據只有在 OnNotify 傳回之前才有效。

呼叫者注意事項

當多個對象發生變更時,您可以在單一呼叫 OnNotify 或多個呼叫中通知已註冊的建議接收,視記憶體條件約束而定。 不論變更是一個方法呼叫還是數個方法呼叫的結果,都是如此。 例如,呼叫 IMAPIFolder::CopyMessages 可能會影響多個訊息和資料夾。 身為訊息存放區提供者,您可以針對目標資料夾或多個呼叫使用 fnevObjectModified 事件類型對 OnNotify 進行一次呼叫,每個會影響訊息一次。 同樣地,如果用戶端重複呼叫 IMAPIFolder::CreateMessage,這些呼叫可以合併成資料夾的一個 fnevObjectModified 事件,或為每個新訊息分成個別 的 fnevObjectCreated 事件。

如需如何及何時產生通知的詳細資訊,請參閱 MAPI中的事件通知 和支援 事件通知

MFCMAPI 參考

如需 MFCMAPI 範例程式代碼,請參閱下表。

檔案 Function Comment
AdviseSink.h 和 AdviseSink.cpp
CAdviseSink::OnNotifyDesc
實作 CAdviseSink 類別以處理 MFCMAPI 中的所有通知。

另請參閱

HrAllocAdviseSink

HrThisThreadAdviseSink

IMAPISupport::Notify

通知

IMAPIAdviseSink : IUnknown

MFCMAPI 作為程式碼範例