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 方法參考專案: IABLogon、 IAddrBook、 IMAPIForm、 IMAPISession、 IMAPITable、 IMsgStore 和 IMSLogon。
如需通知程式的一般資訊,請參閱 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 中的所有通知。 |