Compartilhar via


Implementação de objeto de controle

Aplica-se a: Outlook 2013 | Outlook 2016

Objetos de controle ou objetos compatíveis com a 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.

MAPI chama GetState para determinar se deve ou não desabilitar o botão. 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. 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 tiver êxito 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 refletida 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) alterada na estrutura TABLE_NOTIFICATION . Não coloque o novo valor da propriedade 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.

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

Confira também

Provedores de Serviços MAPI