Objetos de Progresso MAPI

Aplica-se a: Outlook 2013 | Outlook 2016

Com os métodos e os dados de um objeto de progresso, pode controlar o progresso dos relatórios do indicador. Embora um cliente ou MAPI implemente o objeto de progresso, a maior parte do fardo de garantir a correção da apresentação do progresso recai sobre os fornecedores de serviços. Pode garantir a sua precisão ao especificar uma ordem e um valor específicos para os parâmetros transmitidos aos métodos de objetos de progresso.

Os parâmetros seguintes são transmitidos para objetos de progresso:

  • Uma máscara de bits de sinalizadores, definida com IMAPIProgress::SetLimits e obtida com IMAPIProgress::GetFlags.

  • Um valor mínimo (local e global), definido com SetLimits e obtido com IMAPIProgress::GetMin.

  • Um valor máximo (local e global), definido com SetLimits e obtido com IMAPIProgress::GetMax.

  • Um valor que indica a percentagem atual de conclusão da operação, transmitido para IMAPIProgress::P rogress.

  • Uma contagem do número de objetos que foram processados até agora, transmitidos ao Progresso.

  • Uma contagem do número total de objetos envolvidos na operação, transmitido para Progresso.

Todos os fornecedores de serviços iniciam o processamento de apresentação de progresso com uma chamada para IMAPIProgress::GetFlags para obter a definição de sinalizadores atual. Atualmente, os sinalizadores só podem ser definidos como MAPI_TOP_LEVEL. Os clientes e a MAPI inicializam o sinalizador para MAPI_TOP_LEVEL, contando com fornecedores de serviços para o limpar quando adequado.

O valor dos sinalizadores é definido como MAPI_TOP_LEVEL enquanto estiver a trabalhar com o objeto de nível superior na operação. O objeto de nível superior é o objeto que é chamado pelo cliente para iniciar uma operação. Numa operação de cópia de pastas, esta é a pasta que está a ser copiada. Numa operação de eliminação de pastas, esta é a pasta que está a ser eliminada. Quando efetua uma chamada para processar um objeto de nível inferior ou subobjeto, limpe o valor dos sinalizadores. Numa operação de cópia de pastas, os subobjetos são as subpastas que estão na pasta que está a ser copiada.

A MAPI permite-lhe diferenciar entre objetos de nível superior e subobjetos com o sinalizador de MAPI_TOP_LEVEL para que todos os objetos envolvidos numa operação possam utilizar a mesma implementação IMAPIProgress para mostrar o progresso, fazendo com que a apresentação do indicador prossiga sem problemas numa única direção positiva. Se o sinalizador MAPI_TOP_LEVEL está ou não definido afeta as definições dos outros parâmetros nas chamadas subsequentes para o objeto de progresso.

Uma vez que não é possível definir valores de parâmetro adequados para uma apresentação de progresso em todos os níveis de uma operação com múltiplos níveis, alguns fornecedores de serviços optam por não mostrar o progresso dos subobjetos.

Para evitar mostrar o progresso dos subobjetos

  • Transmita NULL para o parâmetro lpProgress na chamada para processar um subobjeto. Por exemplo, se estiver a copiar pastas, esta é a chamada para o método IMAPIFolder::CopyFolder de uma subpasta.

  • Escreva código especial para determinar como interpretar o parâmetro lpProgress . Uma vez que um valor NULL para o parâmetro lpProgress também pode significar que o cliente deve apresentar o progresso através da implementação MAPI, é necessário código especial para determinar quando ignorar o parâmetro lpProgress e quando chamar IMAPISupport::D oProgressDialog.

Chame IMAPIProgress::SetLimits para definir ou limpar o sinalizador MAPI_TOP_LEVEL e para definir valores mínimos e máximos locais e globais. O valor da definição de sinalizadores afeta se o objeto de progresso compreende os valores mínimo e máximo para ser local ou global. Quando o sinalizador MAPI_TOP_LEVEL é definido, estes valores são considerados globais e são utilizados para calcular o progresso de toda a operação. Os objetos de progresso inicializam o valor mínimo global para 0 e o valor máximo global para 1000.

Quando MAPI_TOP_LEVEL não está definido, os valores mínimo e máximo são considerados locais e são utilizados internamente pelos fornecedores para apresentar o progresso dos subobjetos de nível inferior. Os objetos de progresso guardam os valores mínimos e máximos locais apenas para que possam ser devolvidos aos fornecedores quando GetMin e GetMax são chamados.

O valor, a contagem de objetos e os parâmetros totais do objeto são introduzidos no método IMAPIProgress::P rogress . É necessário o parâmetro de valor, um número que indica a percentagem de progresso. Se o sinalizador de MAPI_TOP_LEVEL estiver definido, também pode passar uma contagem de objetos e um total de objetos. Alguns clientes utilizam estes valores para apresentar uma expressão como "5 itens concluídos em 10" com o indicador de progresso. O progresso numa operação pode ser comunicado estritamente como uma percentagem ou como uma percentagem e em termos do número de itens que foram processados do total a processar. Por exemplo, se for um fornecedor de arquivo de mensagens e estiver a executar uma operação de cópia que está a copiar 10 pastas, o indicador de progresso pode fornecer ao utilizador informações adicionais ao apresentar uma expressão como "1 de 10", "2 de 10", "3 de 10" e assim sucessivamente até a operação estar concluída.

Confira também

Indicadores de Progresso mapi