Implementação do objeto de controle

Aplica-se a: Outlook 2013 | Outlook 2016

Objetos de controle ou objetos que dão suporte à interface IMAPIControl : IUnknown são implementados por provedores para adicionar funcionalidade a um botão que aparece em uma caixa de diálogo MAPI. Objetos de controle só podem ser implementados para botões.

O IMAPIControl tem três métodos: GetLastError, GetState e Activate.

O MAPI chama GetState para determinar se o botão deve ou não ser desabilitado. GetState é chamado nas seguintes situações:

  • Quando a caixa de diálogo na qual o botão aparece é exibida pela primeira vez.

  • Quando uma notificação de tabela de exibição é emitida para o botão.

Defina o conteúdo do parâmetro lpulState como MAPI_DISABLED se o usuário não puder interagir com o botão e MAPI_ENABLED se o usuário puder interagir.

Quando o usuário clica no botão, MAPI chama Ativar. A opção Ativar executa a tarefa que foi associada ao botão. Essa tarefa pode ser qualquer coisa apropriada para seu provedor, como exibir uma caixa de diálogo ou atualizar uma propriedade. Se a tarefa não for bem-sucedida porque o usuário a cancelou, retorne MAPI_E_USER_CANCEL. Para outras causas de falha, retorne o valor de erro apropriado.

Se a tarefa for bem-sucedida e estiver vinculada a uma alteração de propriedade que se reflete em outro controle na caixa de diálogo, chame ITableData::HrNotify. HrNotify é chamado para emitir uma notificação de tabela de exibição com a propriedade PR_CONTROL_ID (PidTagControlId) da propriedade alterada na estrutura TABLE_NOTIFICATION . Não coloque o novo valor do imóvel na estrutura; em vez disso, retorne-o quando IMAPIProp::GetProps for chamado. Embora normalmente uma notificação de tabela de exibição não possa ser usada para desabilitar ou habilitar um controle, ela pode ser usada com um botão. O MAPI atualizará o controle alterado para responder à notificação.

O MAPI chama o método GetLastError do controle quando Activate retorna um erro diferente de MAPI_E_USER_CANCEL. Se GetLastError colocar informações de erro estendidas na estrutura MAPIERROR que ele retorna no conteúdo de the_lppMAPIError_ parâmetro, MAPI as exibirá para o usuário.

Confira também

Provedores de Serviço MAPI