適用対象: Outlook 2013 | Outlook 2016
進行状況オブジェクトのメソッドとデータを使用すると、インジケーターが進行状況を報告する方法を制御できます。 クライアントまたは MAPI は進行状況オブジェクトを実装しますが、進行状況表示の正確性を確保する負担のほとんどは、サービス プロバイダーにあります。 進行状況オブジェクト メソッドに渡されるパラメーターの特定の順序と値を指定することで、その精度を保証できます。
次のパラメーターが進行状況オブジェクトに渡されます。
IMAPIProgress::SetLimits で設定され、IMAPIProgress::GetFlags で取得されたフラグのビットマスク。
最小値 (ローカルとグローバル) を SetLimits で設定し、 IMAPIProgress::GetMin で取得します。
最大値 (ローカルとグローバル) を SetLimits で設定し、 IMAPIProgress::GetMax で取得します。
IMAPIProgress::P rogress に渡される、操作の現在の完了率を示す値。
これまでに処理され、 Progress に渡されたオブジェクトの数。
進行状況に渡される、操作に関連するオブジェクトの合計数のカウント。
すべてのサービス プロバイダーは、 IMAPIProgress::GetFlags を呼び出して進行状況表示処理を開始し、現在のフラグ設定を取得します。 現時点では、フラグは MAPI_TOP_LEVEL にのみ設定できます。 クライアントと MAPI は、必要に応じて、サービス プロバイダーに依存してフラグをMAPI_TOP_LEVELに初期化します。
操作で最上位のオブジェクトを操作しているときに、flags 値は MAPI_TOP_LEVEL に設定されます。 最上位のオブジェクトは、操作を開始するためにクライアントによって呼び出されるオブジェクトです。 フォルダーのコピー操作では、コピーするフォルダーです。 フォルダーの削除操作では、これは削除されるフォルダーです。 下位レベルのオブジェクトまたはサブオブジェクトを処理する呼び出しを行う場合は、フラグの値をクリアします。 フォルダーのコピー操作では、サブオブジェクトはコピーするフォルダー内のサブフォルダーです。
MAPI を使用すると、MAPI_TOP_LEVEL フラグを持つ最上位のオブジェクトとサブオブジェクトを区別できるため、操作に関係するすべてのオブジェクトが同じ IMAPIProgress 実装を使用して進行状況を表示できるため、インジケーターの表示が 1 つの正の方向にスムーズに進みます。 MAPI_TOP_LEVEL フラグが設定されているかどうかは、後続の progress オブジェクトの呼び出しの他のパラメーターの設定に影響します。
マルチレベル操作のすべてのレベルで進行状況の表示に適切なパラメーター値を設定することは不利益な場合があるため、一部のサービス プロバイダーはサブオブジェクトの進行状況を表示しないことを選択します。
サブオブジェクトの進行状況を表示しないようにするには
呼び出しで lpProgress パラメーターに NULL を渡して、サブオブジェクトを処理します。 たとえば、フォルダーをコピーする場合、これはサブフォルダーの IMAPIFolder::CopyFolder メソッドの呼び出しです。
lpProgress パラメーターを解釈する方法を決定する特別なコードを記述します。 lpProgress パラメーターの NULL 値は、クライアントが MAPI 実装を使用して進行状況を表示する必要もあるため、lpProgress パラメーターを無視するタイミングと IMAPISupport::D oProgressDialog を呼び出すタイミングを決定するには、特別なコードが必要です。
IMAPIProgress::SetLimits を呼び出して、MAPI_TOP_LEVEL フラグを設定またはクリアし、ローカルおよびグローバルの最小値と最大値を設定します。 フラグ設定の値は、進行状況オブジェクトがローカルまたはグローバルの最小値と最大値を認識するかどうかに影響します。 MAPI_TOP_LEVEL フラグが設定されている場合、これらの値はグローバルと見なされ、操作全体の進行状況を計算するために使用されます。 進行状況オブジェクトは、グローバル最小値を 0 に、グローバル最大値を 1000 に初期化します。
MAPI_TOP_LEVELが設定されていない場合、最小値と最大値はローカルと見なされ、下位レベルのサブオブジェクトの進行状況を表示するためにプロバイダーによって内部的に使用されます。 進行状況オブジェクトは、 GetMin と GetMax が呼び出されたときにプロバイダーに返すことができるように、ローカルの最小値と最大値のみを保存します。
値、オブジェクト数、およびオブジェクトの合計パラメーターは、 IMAPIProgress::P rogress メソッドに入力されます。 値パラメーター (進行状況の割合を示す数値) が必要です。 MAPI_TOP_LEVEL フラグが設定されている場合は、オブジェクト数とオブジェクトの合計を渡すこともできます。 一部のクライアントでは、これらの値を使用して、進行状況インジケーターで "10 個のうち 5 項目が完了しました" などのフレーズを表示します。 操作の進行状況は、処理対象の合計のうち処理された項目の数に対して、パーセンテージまたはパーセンテージとして厳密に報告できます。 たとえば、メッセージ ストア プロバイダーであり、10 個のフォルダーをコピーしているコピー操作を実行している場合、進行状況インジケーターは、操作が完了するまで "1/10"、"2 of 10"、"3/10" などのフレーズを表示することで、追加情報をユーザーに提供できます。