Freigeben über


Implementieren eines Statusindikators

Gilt für: Outlook 2013 | Outlook 2016

Viele der von Clients initiierten Vorgänge nehmen eine erhebliche Zeit in Anspruch. Einer der Eingabeparameter für diese potenziell langwierigen Vorgänge ist ein Zeiger auf ein Statusobjekt – ein Objekt, das die IMAPIProgress: IUnknown-Schnittstelle implementiert. Progress-Objekte steuern die Darstellung und Anzeige von Statusanzeigen und werden von Clients und von MAPI implementiert. Sie können auswählen, ob ein Statusobjekt implementiert werden soll. Die MAPI-Implementierung kann von Dienstanbietern verwendet werden, wenn Sie keine Implementierung bereitstellen möchten.

Progress-Objekte arbeiten mit den folgenden Daten:

  • Ein globaler Mindestwert, der beim Aufrufen der IMAPIProgress::P rogress-Methode kleiner oder gleich dem Wert des ulValue-Parameters sein sollte. Zu Beginn des Vorgangs ist ulValue gleich diesem Mindestwert.

  • Ein globaler Maximalwert, der beim Aufrufen der IMAPIProgress::P rogress-Methode größer oder gleich dem ulValue-Parameter sein sollte. Am Ende des Vorgangs ist ulValue gleich diesem Maximalwert.

  • Ein Flags-Wert, der angibt, ob der Fortschritt einem Element der obersten oder niedrigeren Ebene entspricht.

  • Ein -Wert, der den aktuellen Fortschritt für den Vorgang angibt.

  • Die Anzahl der aktuell verarbeiteten Elemente relativ zur Summe.

  • Die Gesamtanzahl der Elemente, die während des Vorgangs verarbeitet werden sollen.

Die Minimal- und Maximalwerte stellen den Anfang und das Ende des Vorgangs in numerischer Form dar. Verwenden Sie 1 für den anfänglichen Mindestwert und 1000 für den anfänglichen Höchstwert, und übergeben Sie diese Werte an Dienstanbieter in den Methoden IMAPIProgress::GetMin und IMAPIProgress::GetMax . Dienstanbieter setzen diese Werte zurück, wenn sie IMAPIProgress::SetLimits aufrufen.

Der Flagwert wird von Dienstanbietern verwendet, um zu bestimmen, wie die anderen Werte festgelegt werden sollen. Initialisieren Sie den Flags-Wert auf MAPI_TOP_LEVEL und geben Sie diesen Wert in Ihrer GetFlags-Implementierung zurück, bis der Dienstanbieter ihn durch Aufrufen von SetLimits zurücksetzt.

Speichern Sie in Ihrer Implementierung der SetLimits-Methode lokale Kopien der einzelnen Parameter: lpulMin, lpulMax und lpulFlags. Diese Werte sollten sofort verfügbar sein, wenn ein Dienstanbieter Ihre GetMin-, GetMax- oder GetFlags-Methoden aufruft.

Um die Anzeige der Statusanzeige zu aktualisieren, rufen Dienstanbieter Ihre IMAPIProgress::P rogress-Methode auf . Für diese Methode gibt es drei Parameter: einen Wert, eine Anzahl und eine Summe. Verwenden Sie den ersten Parameter ulValue, um die Statusanzeige anzuzeigen. Der ulValue-Parameter ist die Statusanzeige und ist nur zu Beginn des Vorgangs gleich dem globalen ulMin und dem globalen ulMax erst nach Abschluss des Vorgangs.

Verwenden Sie den zweiten und dritten Parameter ulCount und ulTotal, falls verfügbar, um eine optionale Meldung wie "5 von 10 Elementen abgeschlossen" anzuzeigen. Wenn der zweite und der dritte Parameter auf 0 festgelegt sind, können Sie auswählen, ob die Statusanzeige visuell geändert werden soll. Einige Dienstanbieter legen diese Parameter auf Nullen fest, um anzugeben, dass sie ein Unterobjekt verarbeiten, dessen Fortschritt relativ zu einem übergeordneten Objekt überwacht wird. In diesem Fall ist es sinnvoll, die Anzeige nur zu ändern, wenn das übergeordnete Objekt den Fortschritt meldet. Einige Dienstanbieter übergeben für diese Parameter jedes Mal Nullen.