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
Inicialize as bibliotecas OLE chamando
AfxOleInit
na função membroInitInstance
.Chame
CDocTemplate::SetContainerInfo
emInitInstance
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
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.Substitua
IsSelected
para verificar se o item passado para ele está selecionado.Implemente um manipulador de mensagens
OnInsertObject
para exibir a caixa de diálogo Inserir Objeto.Implemente um manipulador de mensagens
OnSetFocus
para transferir o foco do modo de exibição para um item inserido de OLE ativo no local.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
Derive uma classe de COleClientItem. Os objetos dessa classe representam itens que foram inseridos ou vinculados ao documento de OLE.
Substitua
OnChange
,OnChangeItemPosition
eOnGetItemPosition
. 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:
Ativação no local ao editar um item inserido.
Para saber mais, confira Ativação.
Criação de itens de OLE arrastando e soltando uma seleção de um aplicativo de servidor.
Para saber mais, confira Ação do tipo "arrastar e soltar" na OLE.
Links para objetos inseridos ou aplicativos de combinação de contêiner/servidor.
Para saber mais, confira Contêineres: recursos avançados.