Partager via


Implémentation d’un indicateur de progression

S’applique à : Outlook 2013 | Outlook 2016

La plupart des opérations lancées par les clients prennent beaucoup de temps. L’un des paramètres d’entrée de ces opérations potentiellement longues est un pointeur vers un objet progress, un objet qui implémente l’interface IMAPIProgress : IUnknown . Les objets Progress contrôlent l’apparence et l’affichage des indicateurs de progression et sont implémentés par les clients et par MAPI. Vous pouvez choisir d’implémenter ou non un objet de progression. L’implémentation MAPI est disponible pour les fournisseurs de services si vous choisissez de ne pas fournir d’implémentation.

Les objets progress fonctionnent avec les éléments de données suivants :

  • Valeur minimale globale qui, lorsque votre méthode IMAPIProgress ::P rogress est appelée, doit être inférieure ou égale à la valeur du paramètre ulValue . Au début de l’opération, ulValue est égal à cette valeur minimale.

  • Valeur maximale globale qui, lorsque votre méthode IMAPIProgress ::P rogress est appelée, doit être supérieure ou égale au paramètre ulValue . À la fin de l’opération, ulValue est égal à cette valeur maximale.

  • Valeur d’indicateur qui indique si la progression correspond à un élément de niveau supérieur ou inférieur.

  • Valeur qui indique le niveau actuel de progression de l’opération.

  • Nombre d’éléments actuellement traités par rapport au total.

  • Nombre total d’éléments à traiter pendant l’opération.

Les valeurs minimale et maximale représentent le début et la fin de l’opération sous forme numérique. Utilisez 1 pour la valeur minimale initiale et 1 000 pour la valeur maximale initiale, en transmettant ces valeurs aux fournisseurs de services dans les méthodes IMAPIProgress ::GetMin et IMAPIProgress ::GetMax . Les fournisseurs de services réinitialisent ces valeurs lorsqu’ils appellent IMAPIProgress ::SetLimits.

La valeur des indicateurs est utilisée par les fournisseurs de services pour déterminer comment ils doivent définir les autres valeurs. Initialisez la valeur des indicateurs pour MAPI_TOP_LEVEL et retournez cette valeur dans votre implémentation de GetFlags jusqu’à ce que le fournisseur de services la réinitialise en appelant SetLimits.

Dans votre implémentation de la méthode SetLimits , enregistrez des copies locales de chacun des paramètres : lpulMin, lpulMax et lpulFlags. Ces valeurs doivent être facilement disponibles lorsqu’un fournisseur de services appelle vos méthodes GetMin, GetMax ou GetFlags .

Pour mettre à jour l’affichage de l’indicateur de progression, les fournisseurs de services appellent votre méthode IMAPIProgress ::P rogress . Cette méthode comporte trois paramètres : une valeur, un nombre et un total. Utilisez le premier paramètre, ulValue, pour afficher l’indicateur de progression. Le paramètre ulValue est l’indicateur de progression et sera égal à ulMin global uniquement au tout début de l’opération et égal à ulMax global uniquement à la fin de l’opération.

Utilisez les deuxième et troisième paramètres, ulCount et ulTotal, le cas échéant, pour afficher un message facultatif tel que « 5 éléments terminés sur 10 ». Si les deuxième et troisième paramètres sont définis sur 0, vous pouvez choisir de modifier visuellement ou non l’indicateur de progression. Certains fournisseurs de services définissent ces paramètres sur zéros pour indiquer qu’ils traitent un sous-objet dont la progression est surveillée par rapport à un objet parent. Dans ce cas, il est logique de modifier l’affichage uniquement lorsque l’objet parent signale la progression. Certains fournisseurs de services passent des zéros pour ces paramètres à chaque fois.