Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.