共用方式為


實作進度指標

適用於:Outlook 2013 |Outlook 2016

許多由用戶端起始的作業需要相當長的時間。 這些可能冗長作業的其中一個輸入參數是進度物件的指標,這是實作 IMAPIProgress:IUnknown 介面的物件。 進度物件會控制進度指標的外觀和顯示,並由用戶端和MAPI實作。 您可以選擇是否要實作進度物件。 如果您選擇不提供實作,MAPI 實作可供服務提供者使用。

Progress 物件會使用下列數據片段:

  • 呼叫 IMAPIProgress::P rogress 方法時,其全域最小值應該小於或等於 ulValue 參數的值。 在作業開始時, ulValue 會等於這個最小值。

  • 呼叫 IMAPIProgress::P rogress 方法時,其全域最大值應該大於或等於 ulValue 參數。 在作業結束時, ulValue 會等於這個最大值。

  • 旗標值,指出進度是否對應至最上層或較低層級專案。

  • 值,表示作業的目前進度層級。

  • 相對於總計的目前已處理項目數目。

  • 作業期間要處理的項目總數。

最小值和最大值以數值形式表示作業的開始和結束。 使用 1 作為初始最小值,使用 1000 作為初始最大值,將這些值傳遞給 IMAPIProgress::GetMinIMAPIProgress::GetMax 方法中的服務提供者。 服務提供者會在呼叫 IMAPIProgress::SetLimits 時重設這些值。

服務提供者會使用旗標值來判斷它們應該如何設定其他值。 將 flags 值初始化為 MAPI_TOP_LEVEL,並在 您的 GetFlags 實作中傳回此值,直到服務提供者呼叫 SetLimits 重設它為止。

SetLimits 方法的實作中,儲存每個參數的本機複本: lpulMinlpulMaxlpulFlags。 當服務提供者呼叫 您的 GetMinGetMaxGetFlags 方法時,這些值應該可以立即使用。

若要更新進度指示器的顯示,服務提供者會呼叫您的 IMAPIProgress::P rogress 方法。 這個方法有三個參數:值、計數和總計。 使用第一個參數 ulValue 來顯示進度指示器。 ulValue 參數是進度指示器,而且只會在作業一開始就等於全域 ulMin,而且只在作業完成時等於全域 ulMax

如果有的話,請使用第二個和第三個參數 ulCountulTotal 來顯示選擇性訊息,例如「10 個專案中有 5 個專案完成」。如果第二個和第三個參數設定為 0,您可以選擇是否要以可視化方式變更進度指示器。 某些服務提供者會將這些參數設定為零,表示它們正在處理相對於父物件監視進度的子物件。 在此情況下,只有在父物件報告進度時,才變更顯示器是合理的。 有些服務提供者每次都會為這些參數傳遞零。