Partilhar via


Criando um aplicativo de contêiner de documento ativo

A maneira mais simples e recomendada de criar um aplicativo de contêiner de documento ativo é criar um aplicativo de contêiner MFC EXE usando o Assistente de Aplicativo MFC e depois modificar o aplicativo para dar suporte à independência de documentos ativos.

Para criar um aplicativo de contêiner de documento ativo

  1. No menu Arquivo, clique em Projeto no submenu Novo.

  2. No painel esquerdo, clique no tipo de projeto Visual C++.

  3. Selecione Aplicativo MFC no painel direito.

  4. Dê ao projeto o nome MyProj e clique em OK.

  5. Selecione a página Suporte a documentos compostos.

  6. Selecione a opção Contêiner ou Contêiner/Servidor Completo.

  7. Marque a caixa de seleção Contêiner do documento ativo.

  8. Clique em Concluir.

  9. Quando o Assistente de Aplicativo MFC terminar de gerar o aplicativo, abra os seguintes arquivos usando Gerenciador de Soluções:

    • MyProjview.cpp
  10. Em MyProjview.cpp, faça as seguintes alterações:

    • Em CMyProjView::OnPreparePrinting, substitua a chamada da função pelo seguinte código:

      if (!CView::OnPreparePrinting(pInfo))
          return FALSE;
      
      if (!COleDocObjectItem::OnPreparePrinting(this, pInfo))
          return FALSE;
      
      return TRUE;
      

    OnPreparePrinting dá suporte para impressão. Esse código substitui DoPreparePrinting, que é a preparação de impressão padrão.

    A independência de documentos ativos fornece um esquema de impressão aprimorado:

    • Primeiro, você pode chamar o documento ativo por meio de sua interface IPrint e instruir que ele imprima a si próprio. Isso é diferente da independência de OLE anterior, na qual o contêiner precisava renderizar uma imagem do item contido no objeto CDC da impressora.

    • Se isso falhar, instrua o item contido a imprimir a si mesmo por meio de sua interface IOleCommandTarget

    • Se isso falhar, faça uma renderização própria do item.

    As funções de membro estáticas COleDocObjectItem::OnPrint e COleDocObjectItem::OnPreparePrinting, conforme implementado no código anterior, lidam com esse esquema de impressão aprimorado.

  11. Adicione qualquer implementação própria e compile o aplicativo.

Confira também

Contenção de documentos ativos