Compartilhar via


Contêineres: implementando um contêiner

Este artigo resume o procedimento para implementar um contêiner e direciona a outros artigos que fornecem explicações mais detalhadas sobre a implementação de contêineres. Ele também lista alguns recursos opcionais do OLE que você pode implementar e os artigos que descrevem esses recursos.

Para preparar a classe derivada do CWinApp

  1. Inicialize as bibliotecas OLE chamando AfxOleInit na função membro InitInstance.

  2. Chame CDocTemplate::SetContainerInfo em InitInstance para atribuir os recursos de menu e acelerador usados quando um item inserido é ativado no local. Para obter mais informações sobre esse tópico, consulte Ativação.

Esses recursos são fornecidos automaticamente quando você usa o Assistente de Aplicativo MFC para criar um aplicativo de contêiner. Consulte Criando um programa EXE do MFC.

Para preparar a classe de exibição

  1. Acompanhe os itens selecionados mantendo um ponteiro, ou uma lista de ponteiros, se houver suporte para seleção múltipla nos itens selecionados. Sua função OnDraw precisa obter todos os itens de OLE.

  2. Substitua IsSelected para verificar se o item passado para ele está selecionado.

  3. Implemente um manipulador de mensagens OnInsertObject para exibir a caixa de diálogo Inserir Objeto.

  4. Implemente um manipulador de mensagens OnSetFocus para transferir o foco do modo de exibição para um item inserido de OLE ativo no local.

  5. Implemente um manipulador de mensagens OnSize para informar um item inserido de OLE de que ele precisa para alterar seu retângulo para refletir a alteração de tamanho do modo de exibição que o contém.

Como a implementação desses recursos varia drasticamente entre diferentes aplicativos, o assistente do aplicativo fornece apenas uma implementação básica. Provavelmente, você precisará personalizar essas funções para que o aplicativo funcione corretamente. Para ver um exemplo disso, consulte o exemplo CONTAINER.

Para manipular itens inseridos e vinculados

  1. Derive uma classe de COleClientItem. Os objetos dessa classe representam itens que foram inseridos ou vinculados ao documento de OLE.

  2. Substitua OnChange, OnChangeItemPosition e OnGetItemPosition. Essas funções lidam com o dimensionamento, o posicionamento e a modificação de itens inseridos e vinculados.

O assistente do aplicativo derivará a classe para você, mas provavelmente você precisará substituir OnChange e as outras funções listadas com ela na etapa 2 no procedimento anterior. As implementações esqueleto precisam ser personalizadas para a maioria dos aplicativos, pois essas funções são implementadas de maneira diferente de um aplicativo para outro. Para ver exemplos disso, consulte os exemplos do MFC DRAWCLI e CONTAINER.

Você precisa adicionar vários itens à estrutura de menu do aplicativo de contêiner para dar suporte ao OLE. Para saber mais sobre eles, consulte Menus e recursos: adições de contêiner.

Talvez você também queira dar suporte a alguns dos seguintes recursos no aplicativo de contêiner:

Confira também

Contêineres
Contêineres: itens clientes