次の方法で共有


進行状況インジケーターの実装

適用対象: Outlook 2013 | Outlook 2016

クライアントによって開始される操作の多くは、かなりの時間がかかります。 これらの操作に対する入力パラメーターの 1 つは、進行状況オブジェクト ( IMAPIProgress: IUnknown インターフェイスを実装するオブジェクト) へのポインターです。 進行状況オブジェクトは進行状況インジケーターの外観と表示を制御し、クライアントと MAPI によって実装されます。 進行状況オブジェクトを実装するかどうかを選択できます。 MAPI の実装は、実装を指定しない場合にサービス プロバイダーが使用できます。

進行状況オブジェクトは、次のデータで動作します。

  • IMAPIProgress::P rogress メソッドが呼び出されたときに、ulValue パラメーターの値以下にする必要があるグローバル最小値。 操作の開始時に、 ulValue はこの最小値と等しくなります。

  • IMAPIProgress::P rogress メソッドが呼び出されたときのグローバル最大値は、ulValue パラメーター以上である必要があります。 操作の最後に、 ulValue はこの最大値と等しくなります。

  • 進行状況が上位または下位レベルの項目に対応するかどうかを示すフラグ値。

  • 操作の現在の進行状況を示す値。

  • 合計に対する現在処理されている項目の数。

  • 操作中に処理される項目の合計数。

最小値と最大値は、操作の開始と終了を数値形式で表します。 初期最小値には 1、初期値には 1000 を使用し、これらの値を IMAPIProgress::GetMin メソッドと IMAPIProgress::GetMax メソッドのサービス プロバイダーに渡します。 サービス プロバイダーは、 IMAPIProgress::SetLimits を呼び出すと、これらの値をリセットします。

フラグ値は、サービス プロバイダーが他の値を設定する方法を決定するために使用されます。 フラグ値をMAPI_TOP_LEVELに初期化し、サービス プロバイダーが SetLimits を呼び出してリセットするまで、GetFlags の実装でこの値を返します。

SetLimits メソッドの実装で、lpulMin、lpulMaxlpulFlags の各パラメーターのローカル コピーを保存します。 これらの値は、サービス プロバイダーが GetMinGetMax、または GetFlags メソッドを呼び出すときにすぐに使用できる必要があります。

進行状況インジケーターの表示を更新するために、サービス プロバイダーは IMAPIProgress::P rogress メソッドを 呼び出します。 このメソッドには、値、カウント、合計の 3 つのパラメーターがあります。 進行状況インジケーターを表示するには、最初のパラメーター ulValue を使用します。 ulValue パラメーターは進行状況インジケーターであり、操作の開始時にのみグローバル ulMin に等しく、操作の完了時にのみグローバル ulMax と等しくなります。

2 番目と 3 番目のパラメーター ulCountulTotal (使用可能な場合) を使用して、"10 個のうち 5 つの項目が完了しました" などの省略可能なメッセージを表示します。2 番目と 3 番目のパラメーターが 0 に設定されている場合は、進行状況インジケーターを視覚的に変更するかどうかを選択できます。 一部のサービス プロバイダーでは、これらのパラメーターを 0 に設定して、親オブジェクトを基準として進行状況が監視されるサブオブジェクトを処理していることを示します。 この状況では、親オブジェクトが進行状況を報告する場合にのみ表示を変更するのが理にかなっています。 一部のサービス プロバイダーでは、これらのパラメーターに対して毎回 0 が渡されます。