MAPI-Statusobjekte

Gilt für: Outlook 2013 | Outlook 2016

Mit den Methoden und Daten eines Statusobjekts können Sie steuern, wie der Indikator den Fortschritt meldet. Obwohl ein Client oder MAPI das Statusobjekt implementiert, liegt der größte Teil der Last für die Sicherstellung der Korrektheit der Statusanzeige bei Dienstanbietern. Sie können die Genauigkeit gewährleisten, indem Sie eine bestimmte Reihenfolge und einen bestimmten Wert für die Parameter angeben, die an Progress-Objektmethoden übergeben werden.

Die folgenden Parameter werden an Statusobjekte übergeben:

  • Eine Bitmaske von Flags, die mit IMAPIProgress::SetLimits festgelegt und mit IMAPIProgress::GetFlags abgerufen wird.

  • Ein Mindestwert (lokal und global), der mit SetLimits festgelegt und mit IMAPIProgress::GetMin abgerufen wird.

  • Ein Maximalwert (lokal und global), der mit SetLimits festgelegt und mit IMAPIProgress::GetMax abgerufen wird.

  • Ein -Wert, der den aktuellen Prozentsatz des Abschlusses des Vorgangs angibt, der an IMAPIProgress::P rogress übergeben wird.

  • Eine Anzahl der Objekte, die bisher verarbeitet wurden und an Progress übergeben wurden.

  • Die Anzahl der an den Vorgang beteiligten Objekte, die an Progress übergeben werden.

Alle Dienstanbieter beginnen mit der Verarbeitung der Statusanzeige mit einem Aufruf von IMAPIProgress::GetFlags , um die Einstellung für die aktuellen Flags abzurufen. Derzeit können die Flags nur auf MAPI_TOP_LEVEL festgelegt werden. Clients und MAPI initialisieren das Flag auf MAPI_TOP_LEVEL, wobei es ggf. von Dienstanbietern gelöscht wird.

Der Flags-Wert wird auf MAPI_TOP_LEVEL festgelegt, während Sie mit dem Objekt der obersten Ebene im Vorgang arbeiten. Das Objekt der obersten Ebene ist das Objekt, das vom Client aufgerufen wird, um einen Vorgang zu starten. Bei einem Ordnerkopiervorgang ist dies der Ordner, der kopiert wird. Bei einem Ordnerlöschvorgang ist dies der Ordner, der gelöscht wird. Wenn Sie einen Aufruf zum Verarbeiten eines Objekts oder Unterobjekts auf niedrigerer Ebene durchführen, löschen Sie den Flags-Wert. Bei einem Ordnerkopiervorgang sind Unterobjekte die Unterordner, die sich im kopierten Ordner befinden.

MapI ermöglicht es Ihnen, zwischen Objekten der obersten Ebene und Unterobjekten mit dem flag MAPI_TOP_LEVEL zu unterscheiden, sodass alle an einem Vorgang beteiligten Objekte dieselbe IMAPIProgress-Implementierung verwenden können, um den Fortschritt anzuzeigen, wodurch die Anzeige des Indikators reibungslos in einer einzigen positiven Richtung verläuft. Ob das MAPI_TOP_LEVEL-Flag festgelegt ist oder nicht, wirkt sich auf die Einstellungen der anderen Parameter in nachfolgenden Aufrufen des Statusobjekts aus.

Da es nicht wichtig sein kann, geeignete Parameterwerte für eine Statusanzeige auf allen Ebenen eines Vorgangs mit mehreren Ebenen festzulegen, entscheiden sich einige Dienstanbieter dafür, den Fortschritt für Unterobjekte nicht anzuzeigen.

So vermeiden Sie das Anzeigen des Fortschritts für Unterobjekte

  • Übergeben Sie NULL für den lpProgress-Parameter im Aufruf, um ein Unterobjekt zu verarbeiten. Wenn Sie beispielsweise Ordner kopieren, ist dies der Aufruf der IMAPIFolder::CopyFolder-Methode eines Unterordners.

  • Schreiben Sie speziellen Code, um zu bestimmen, wie der lpProgress-Parameter interpretiert werden soll. Da ein NULL-Wert für den lpProgress-Parameter auch bedeuten kann, dass der Client den Fortschritt mithilfe der MAPI-Implementierung anzeigen soll, ist spezieller Code erforderlich, um zu bestimmen, wann der lpProgress-Parameter ignoriert und wann IMAPISupport::D oProgressDialog aufgerufen werden soll.

Rufen Sie IMAPIProgress::SetLimits auf, um das MAPI_TOP_LEVEL-Flag festzulegen oder zu löschen und lokale und globale Mindest- und Höchstwerte festzulegen. Der Wert der Flags-Einstellung wirkt sich darauf aus, ob das Progress-Objekt versteht, dass die Minimal- und Höchstwerte lokal oder global sind. Wenn das MAPI_TOP_LEVEL-Flag festgelegt ist, werden diese Werte als global betrachtet und zur Berechnung des Fortschritts für den gesamten Vorgang verwendet. Progress-Objekte initialisieren den globalen Mindestwert auf 0 und den globalen Höchstwert auf 1000.

Wenn MAPI_TOP_LEVEL nicht festgelegt ist, werden die Minimal- und Höchstwerte als lokal betrachtet und intern von Anbietern verwendet, um den Fortschritt für Untergeordnete Objekte auf niedrigerer Ebene anzuzeigen. Progress-Objekte speichern nur die lokalen Mindest- und Höchstwerte, sodass sie an Anbieter zurückgegeben werden können, wenn GetMin und GetMax aufgerufen werden.

Die Parameter value, object count und object total werden in die IMAPIProgress::P rogress-Methode eingegeben. Der Value-Parameter, eine Zahl, die den Prozentsatz des Fortschritts angibt, ist erforderlich. Wenn das MAPI_TOP_LEVEL-Flag festgelegt ist, können Sie auch eine Objektanzahl und eine Objektsumme übergeben. Einige Clients verwenden diese Werte, um einen Ausdruck wie "5 von 10 abgeschlossene Elemente" mit der Statusanzeige anzuzeigen. Der Fortschritt eines Vorgangs kann ausschließlich als Prozentsatz oder als Prozentsatz und in Bezug auf die Anzahl der Elemente gemeldet werden, die aus dem zu verarbeitenden Gesamtbetrag verarbeitet wurden. Wenn Sie beispielsweise ein Nachrichtenspeicheranbieter sind und einen Kopiervorgang ausführen, bei dem 10 Ordner kopiert werden, kann die Statusanzeige dem Benutzer zusätzliche Informationen bereitstellen, indem ein Ausdruck wie "1 von 10", "2 von 10", "3 von 10" usw. angezeigt wird, bis der Vorgang abgeschlossen ist.

Siehe auch

MAPI-Fortschrittsindikatoren