Compartilhar via


Classe CDocument

Fornece a funcionalidade básica para classes de documento definidas pelo usuário.

Sintaxe

class CDocument : public CCmdTarget

Membros

Construtores públicos

Nome Descrição
CDocument::CDocument Constrói um objeto CDocument.

Métodos públicos

Nome Descrição
CDocument::AddView Anexa uma exibição ao documento.
CDocument::BeginReadChunks Inicializa a leitura em partes.
CDocument::CanCloseFrame Substituível avançado; chamado antes de fechar uma janela com moldura exibindo este documento.
CDocument::ClearChunkList Limpa a lista de partes.
CDocument::ClearPathName Limpa o caminho do objeto do documento.
CDocument::DeleteContents Chamado para executar a limpeza do documento.
CDocument::FindChunk Procura uma parte com GUID especificado.
CDocument::GetAdapter Retorna um ponteiro para a interface IDocument de implementação de objeto.
CDocument::GetDocTemplate Retorna um ponteiro para o modelo de documento que descreve o tipo do documento.
CDocument::GetFile Retorna um ponteiro para o objeto CFile desejado.
CDocument::GetFirstViewPosition Retorna a posição do primeiro na lista de exibições; usado para iniciar a iteração.
CDocument::GetNextView Itera por meio da lista de exibições associadas ao documento.
CDocument::GetPathName Retorna o caminho do arquivo de dados do documento.
CDocument::GetThumbnail Chamado para criar um bitmap a ser usado pelo provedor de miniaturas para exibir miniaturas.
CDocument::GetTitle Recupera o título do documento.
CDocument::InitializeSearchContent Chamado para inicializar o conteúdo da pesquisa para o Manipulador de Pesquisa.
CDocument::IsModified Indica se o documento foi modificado desde que foi salvo pela última vez.
CDocument::IsSearchAndOrganizeHandler Informa se essa instância do CDocument objeto foi criada para o manipulador de Pesquisa e Organização.
CDocument::LoadDocumentFromStream Chamado para carregar dados do documento do fluxo.
CDocument::OnBeforeRichPreviewFontChanged Chamado antes que a fonte de Visualização Avançada seja alterada.
CDocument::OnChangedViewList Chamado depois que uma exibição é adicionada ou removida do documento.
CDocument::OnCloseDocument Chamado para fechar o documento.
CDocument::OnCreatePreviewFrame Chamado pela estrutura quando ela precisa criar um quadro de visualização para Visualização Avançada.
CDocument::OnDocumentEvent Chamado pela estrutura em resposta a um evento de documento.
CDocument::OnDrawThumbnail Substitua esse método em uma classe derivada para desenhar o conteúdo da miniatura.
CDocument::OnLoadDocumentFromStream Chamado pela estrutura quando ela precisa carregar os dados do documento do fluxo.
CDocument::OnNewDocument Chamado para criar um novo documento.
CDocument::OnOpenDocument Chamado para abrir um documento existente.
CDocument::OnPreviewHandlerQueryFocus Direciona o manipulador de visualização para retornar o HWND ao chamar a função GetFocus.
CDocument::OnPreviewHandlerTranslateAccelerator Direciona o manipulador de visualização para manipular um pressionamento de tecla passado da bomba de mensagem do processo no qual o manipulador de visualização está em execução.
CDocument::OnRichPreviewBackColorChanged Chamado quando a cor da tela de fundo da Visualização Avançada foi alterada.
CDocument::OnRichPreviewFontChanged Chamado quando a fonte da Visualização Avançada foi alterada.
CDocument::OnRichPreviewSiteChanged Chamado quando o site da Visualização Avançada foi alterado.
CDocument::OnRichPreviewTextColorChanged Chamado quando a cor do texto da Visualização Avançada foi alterada.
CDocument::OnSaveDocument Chamado para salvar o documento no disco.
CDocument::OnUnloadHandler Chamado pela estrutura quando o manipulador de visualização está sendo descarregado.
CDocument::PreCloseFrame Chamado antes que a janela com moldura seja fechada.
CDocument::ReadNextChunkValue Lê o valor da próxima parte.
CDocument::ReleaseFile Libera um arquivo para disponibilizá-lo para uso por outros aplicativos.
CDocument::RemoveChunk Remove uma parte com GUID especificado.
CDocument::RemoveView Desanexa uma exibição do documento.
CDocument::ReportSaveLoadException Substituível avançado; chamado quando uma operação de abrir ou salvar não pode ser concluída devido a uma exceção.
CDocument::SaveModified Substituível avançado; chamado para perguntar ao usuário se o documento deve ser salvo.
CDocument::SetChunkValue Define um valor de parte.
CDocument::SetModifiedFlag Define um sinalizador que indica que você modificou o documento desde que ele foi salvo pela última vez.
CDocument::SetPathName Define o caminho do arquivo de dados usado pelo documento.
CDocument::SetTitle Define o título do documento.
CDocument::UpdateAllViews Notifica todos os modos de exibição de que o documento foi modificado.

Métodos protegidos

Nome Descrição
CDocument::OnFileSendMail Envia uma mensagem de email com o documento anexado.
CDocument::OnUpdateFileSendMail Habilita o comando Enviar email se o suporte de email estiver presente.

Membros de Dados Públicos

Nome Descrição
CDocument::m_bGetThumbnailMode Especifica que o objeto CDocument foi criado por dllhost para miniaturas. Deve ser verificado em CView::OnDraw.
CDocument::m_bPreviewHandlerMode Especifica que o objeto CDocument foi criado por prevhost para Rich Preview. Deve ser verificado em CView::OnDraw.
CDocument::m_bSearchMode Especifica que o objeto CDocument foi criado pelo indexador ou outro aplicativo de pesquisa.
CDocument::m_clrRichPreviewBackColor Especifica a cor da tela de fundo da janela de Visualização Avançada. Essa cor é definida pelo host.
CDocument::m_clrRichPreviewTextColor Especifica a cor de primeiro plano da janela de Visualização Avançada. Essa cor é definida pelo host.
CDocument::m_lfRichPreviewFont Especifica a fonte de texto para a janela de Visualização Avançada. Essas informações de fonte são definidas pelo host.

Comentários

Um documento representa a unidade de dados que o usuário normalmente abre com o comando Abrir Arquivo e salva com o comando Salvar Arquivo.

CDocument dá suporte a operações padrão, como criar um documento, carregá-lo e salvá-lo. A estrutura manipula documentos usando a interface definida por CDocument.

Um aplicativo pode oferecer suporte a mais de um tipo de documento; por exemplo, um aplicativo pode dar suporte a planilhas e documentos de texto. Cada tipo de documento tem um modelo de documento associado; o modelo de documento especifica quais recursos (por exemplo, menu, ícone ou tabela de teclas aceleradoras) são usados para esse tipo de documento. Cada documento contém um ponteiro para seu objeto CDocTemplate associado.

Os usuários interagem com um documento por meio do(s) objeto(s) CView associado(s) a ele. Uma exibição renderiza uma imagem do documento em uma janela com moldura e interpreta a entrada do usuário como operações no documento. Um documento pode ter vários modos de exibição associados a ele. Quando o usuário abre uma janela em um documento, a estrutura cria uma exibição e a anexa ao documento. O modelo de documento especifica que tipo de exibição e janela com moldura são usados para exibir cada tipo de documento.

Os documentos fazem parte do roteamento de comando padrão da estrutura e, consequentemente, recebem comandos de componentes padrão da interface do usuário (como o item de menu Salvar arquivo). Um documento recebe comandos encaminhados pela exibição ativa. Se o documento não manipular um determinado comando, ele encaminhará o comando para o modelo de documento que o gerencia.

Quando os dados de um documento são modificados, cada um de seus modos de exibição deve refletir essas modificações. CDocument fornece a função membro UpdateAllViews para que você notifique os modos de exibição dessas alterações, de modo que as exibições possam se repintar conforme necessário. A estrutura também solicita que o usuário salve um arquivo modificado antes de fechá-lo.

Para implementar documentos em um aplicativo típico, você deve fazer o seguinte:

  • Derive uma classe de CDocument para cada tipo de documento.

  • Adicione variáveis de membro para armazenar os dados de cada documento.

  • Implemente funções membro para ler e modificar os dados do documento. Os modos de exibição do documento são os usuários mais importantes dessas funções membro.

  • Substitua a função membro CObject::Serialize na classe de documento para gravar e ler os dados do documento de e para o disco.

CDocument dá suporte ao envio do documento por email se o suporte de email (MAPI) estiver presente. Consulte os artigos MAPI e Suporte a MAPI no MFC.

Para obter mais informações sobre CDocument, consulte Serialização, Tópicos de Arquitetura de Documento/Exibição e Criação de Documentos/Exibições.

Hierarquia de herança

CObject

CCmdTarget

CDocument

Requisitos

Cabeçalho: afxwin.h

CDocument::AddView

Chame essa função para anexar uma exibição ao documento.

void AddView(CView* pView);

Parâmetros

pView
Aponta para a exibição que está sendo adicionada.

Comentários

Essa função adiciona o modo de exibição especificado à lista de exibições associadas ao documento. A função também define o ponteiro de documento da exibição para este documento. A estrutura chama essa função ao anexar um objeto de exibição recém-criado a um documento; isso ocorre em resposta a um comando Novo Arquivo, Abrir Arquivo ou Nova Janela, ou quando uma janela separadora é dividida.

Chame essa função somente se você estiver criando e anexando manualmente uma exibição. Normalmente, você permitirá que a estrutura conecte documentos e exibições definindo um objeto CDocTemplate para associar uma classe de documento, classe de exibição e a classe de janela com moldura.

Exemplo

// The following example toggles two views in an SDI (single document
// interface) frame window. A design decision must be made as to
// whether to leave the inactive view connected to the document,
// such that the inactive view continues to receive OnUpdate
// notifications from the document. It is usually desirable to
// keep the inactive view continuously in sync with the document, even
// though it is inactive. However, doing so incurs a performance cost,
// as well as the programming cost of implementing OnUpdate hints.
// It may be less expensive, in terms of performance and/or programming,
// to re-sync the inactive view with the document only with it is
// reactivated. This example illustrates this latter approach, by
// reconnecting the newly active view and disconnecting the newly
// inactive view, via calls to CDocument::AddView and RemoveView.

void CMainFrame::OnViewChange(UINT nCmdID)
// There is an ON_COMMAND_RANGE message map entry associated with
// OnViewChange:
// ON_COMMAND_RANGE(ID_VIEW_CHANGE1, ID_VIEW_CHANGE2, &OnViewChange)
{
   CView *pViewAdd;
   CView *pViewRemove;
   CDocument *pDoc = GetActiveDocument();

   // cvView1 and cvView2 are enum members defined in my CMainFrame class
   if ((nCmdID == ID_VIEW_CHANGE1) && (m_currentView == cvView1))
      return;
   if ((nCmdID == ID_VIEW_CHANGE2) && (m_currentView == cvView2))
      return;

   if (nCmdID == ID_VIEW_CHANGE2)
   {
      if (m_pView2 == NULL)
      {
         m_pView1 = GetActiveView();
         m_pView2 = new CMyView2;

         //Note that if OnSize has been overridden in CMyView2
         //and GetDocument() is used in this override it can
         //cause assertions and, if the assertions are ignored,
         //cause access violation.

         m_pView2->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, rectDefault, this,
                          AFX_IDW_PANE_FIRST + 1, NULL);
      }
      pViewAdd = m_pView2;
      pViewRemove = m_pView1;
      m_currentView = cvView2;
   }
   else
   {
      pViewAdd = m_pView1;
      pViewRemove = m_pView2;
      m_currentView = cvView1;
   }

   // Set the child i.d. of the active view to AFX_IDW_PANE_FIRST,
   // so that CFrameWnd::RecalcLayout will allocate to this
   // "first pane" that portion of   the frame window's client area
   // not allocated to control   bars.  Set the child i.d. of the
   // other view to anything other than AFX_IDW_PANE_FIRST; this
   // examples switches the child id's of the two views.

   int nSwitchChildID = pViewAdd->GetDlgCtrlID();
   pViewAdd->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
   pViewRemove->SetDlgCtrlID(nSwitchChildID);

   // Show the newly active view and hide the inactive view.

   pViewAdd->ShowWindow(SW_SHOW);
   pViewRemove->ShowWindow(SW_HIDE);

   // Connect the newly active view to the document, and
   // disconnect the inactive view.
   pDoc->AddView(pViewAdd);
   pDoc->RemoveView(pViewRemove);

   SetActiveView(pViewAdd);
   RecalcLayout();
}

CDocument::BeginReadChunks

Inicializa a leitura em partes.

virtual void BeginReadChunks ();

Comentários

CDocument::CanCloseFrame

Chamado pela estrutura antes fechar uma janela com moldura que exibe o documento.

virtual BOOL CanCloseFrame(CFrameWnd* pFrame);

Parâmetros

pFrame
Aponta para a janela com moldura de uma exibição anexado ao documento.

Valor de retorno

Diferente de zero se for seguro fechar a janela com moldura; caso contrário, 0.

Comentários

A implementação padrão verifica se há outras janelas com moldura exibindo o documento. Se a janela com moldura especificada for a última que exibe o documento, a função solicitará que o usuário salve o documento se ele tiver sido modificado. Substitua essa função se você quiser executar processamento especial quando uma janela com moldura for fechada. Essa é uma substituição avançada.

CDocument::CDocument

Constrói um objeto CDocument.

CDocument();

Comentários

A estrutura manipula a criação de documentos para você. Substitua a função membro OnNewDocument para executar a inicialização por documento. Isso é particularmente importante em aplicativos de interface SDI (single-document interface).

CDocument::ClearChunkList

Limpa a lista de partes.

virtual void ClearChunkList ();

Comentários

CDocument::ClearPathName

Limpa o caminho do objeto do documento.

virtual void ClearPathName();

Comentários

Limpar o caminho de um objeto CDocument faz com que o aplicativo solicite confirmação ao usuário quando o documento for salvo da próxima vez. Isso faz com que um comando Salvar se comporte como um comando Salvar como.

CDocument::DeleteContents

Chamado pela estrutura para excluir os dados do documento sem destruir o próprio objeto CDocument.

virtual void DeleteContents();

Comentários

É chamado pouco antes do documento ser destruído. Ele também é chamado para garantir que um documento esteja vazio antes de ser reutilizado. Isso é especialmente importante para um aplicativo SDI, que usa apenas um documento, pois o documento é reutilizado sempre que o usuário cria ou abre outro documento. Chame essa função para implementar um comando "Edit Clear All" ou semelhante que exclui todos os dados do documento. A implementação padrão dessa função não faz nada. Substitua essa função para excluir os dados no documento.

Exemplo

// This example is the handler for an Edit Clear All command.
void CExampleDoc::OnEditClearAll()
{
   DeleteContents();
   UpdateAllViews(NULL);
}

void CExampleDoc::DeleteContents()
{
   // Re-initialize document data here.
}

CDocument::FindChunk

Procura uma parte com GUID especificado.

virtual POSITION FindChunk(
    REFCLSID guid,
    DWORD pid);

Parâmetros

guid
Especifica o GUID de uma parte a ser encontrada.

pid
Especifica um PID de uma parte a ser encontrada.

Valor de retorno

Posição na lista de partes internas se tiver êxito. Caso contrário, NULL.

Comentários

CDocument::GetAdapter

Retorna um ponteiro para um objeto implementando a interface IDocument.

virtual ATL::IDocument* GetAdapter();

Valor de retorno

Um ponteiro para um objeto implementando a interface IDocument.

Comentários

CDocument::GetDocTemplate

Chame essa função para obter um ponteiro do modelo de documento para esse tipo de documento.

CDocTemplate* GetDocTemplate() const;

Valor de retorno

Um ponteiro para o modelo de documento para esse tipo de documento ou NULL, se o documento não for gerenciado por um modelo de documento.

Exemplo

// This example accesses the doc template object to construct
// a default document name such as SHEET.XLS, where "sheet"
// is the base document name and ".xls" is the file extension
// for the document type.
CString strDefaultDocName, strBaseName, strExt;
CDocTemplate *pDocTemplate = GetDocTemplate();
if (!pDocTemplate->GetDocString(strBaseName, CDocTemplate::docName) || !pDocTemplate->GetDocString(strExt, CDocTemplate::filterExt))
{
   AfxThrowUserException(); // These doc template strings will
                            // be available if you created the application using AppWizard
                            // and specified the file extension as an option for
                            // the document class produced by AppWizard.
}
strDefaultDocName = strBaseName + strExt;

CDocument::GetFile

Chame essa função membro para obter um ponteiro para um objeto CFile.

virtual CFile* GetFile(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CFileException* pError);

Parâmetros

lpszFileName
Uma cadeia de caracteres que é o caminho para o arquivo desejado. O caminho pode ser relativo ou absoluto.

pError
Um ponteiro para um objeto de exceção de arquivo existente que indica o status de conclusão da operação.

nOpenFlags
Compartilhamento e modo de acesso. Ele especifica a ação a ser executada ao abrir o arquivo. Você pode combinar opções listadas no construtor CFile CFile::CFile usando o operador OR (|) bit a bit. São necessárias uma permissão de acesso e uma opção de compartilhamento; e os modos modeCreate e modeNoInherit são opcionais.

Valor de retorno

Um ponteiro para um objeto CFile.

CDocument::GetFirstViewPosition

Chame essa função para obter a posição da primeira exibição na lista de exibições associadas ao documento.

virtual POSITION GetFirstViewPosition() const;

Valor de retorno

Um valor POSITION que pode ser usado para iteração com a função membro GetNextView.

Exemplo

//To get the first view in the list of views:
//To get the first view in the list of views:
// POSITION pos = GetFirstViewPosition();
// CView* pFirstView = GetNextView(pos);
//
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
void CExampleDoc::OnRepaintAllViews()
{
   POSITION pos = GetFirstViewPosition();
   while (pos != NULL)
   {
      CView *pView = GetNextView(pos);
      pView->UpdateWindow();
   }
}

CDocument::GetNextView

Chame essa função para iterar em todos os modos de exibição do documento.

virtual CView* GetNextView(POSITION& rPosition) const;

Parâmetros

rPosition
Uma referência a um valor POSITION retornado por uma chamada anterior para as funções membro GetNextView ou GetFirstViewPosition. Esse valor não deve ser NULL.

Valor de retorno

Um ponteiro para a exibição identificada por rPosition.

Comentários

A função retorna a exibição identificada por rPosition e, em seguida, define rPosition como o valor POSITION da próxima exibição na lista. Se a exibição recuperada for a última da lista, rPosition será definido como NULL.

Exemplo

//To get the first view in the list of views:
//To get the first view in the list of views:
// POSITION pos = GetFirstViewPosition();
// CView* pFirstView = GetNextView(pos);
//
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
void CExampleDoc::OnRepaintAllViews()
{
   POSITION pos = GetFirstViewPosition();
   while (pos != NULL)
   {
      CView *pView = GetNextView(pos);
      pView->UpdateWindow();
   }
}

CDocument::GetPathName

Chame essa função para obter o caminho totalmente qualificado do arquivo de disco do documento.

const CString& GetPathName() const;

Valor de retorno

O caminho totalmente qualificado do documento. Essa cadeia de caracteres estará vazia se o documento não tiver sido salvo ou não tiver um arquivo de disco associado a ele.

CDocument::GetThumbnail

Cria um bitmap a ser usado pelo provedor de miniaturas para exibir a miniatura.

virtual BOOL GetThumbnail(
    UINT cx,
    HBITMAP* phbmp,
    DWORD* pdwAlpha);

Parâmetros

cx
Especifica a largura e a altura do bitmap.

phbmp
Contém um identificador para um bitmap, quando a função retorna com êxito.

pdwAlpha
Contem um DWORD especificando o valor do canal alfa, quando a função retorna com êxito.

Valor de retorno

Retorna TRUE se um bitmap para a miniatura foi criado com êxito; caso contrário FALSE.

Comentários

CDocument::GetTitle

Chame essa função para obter o título do documento, que geralmente é derivado do nome de arquivo do documento.

const CString& GetTitle() const;

Valor de retorno

O título do documento.

CDocument::InitializeSearchContent

Chamado para inicializar o conteúdo da pesquisa para o Manipulador de Pesquisa.

virtual void InitializeSearchContent ();

Comentários

Substitua esse método em uma classe derivada para inicializar o conteúdo da pesquisa. O conteúdo deve ser uma cadeia de caracteres com partes delimitadas por ";". Por exemplo, "ponto; retângulo; item ole".

CDocument::IsModified

Chame essa função para determinar se o documento foi modificado desde que foi salvo pela última vez.

virtual BOOL IsModified();

Valor de retorno

Diferente de zero, se o documento foi modificado desde que foi salvo pela última vez; caso contrário, 0.

CDocument::IsSearchAndOrganizeHandler

Informa se essa instância de CDocument foi criada para o manipulador Pesquisar e Organizar.

BOOL IsSearchAndOrganizeHandler() const;

Valor de retorno

Retorna TRUE se essa instância de CDocument foi criada para o manipulador Pesquisar e Organizar.

Comentários

Atualmente, essa função retorna TRUE apenas para manipuladores de visualização avançada implementados em um servidor fora do processo. Você pode definir os sinalizadores apropriados (m_bPreviewHandlerMode, m_bSearchMode, m_bGetThumbnailMode) no nível do aplicativo para fazer essa função retornar TRUE.

CDocument::LoadDocumentFromStream

Chamado para carregar dados do documento de um fluxo.

virtual HRESULT LoadDocumentFromStream(
    IStream* pStream,
    DWORD dwGrfMode);

Parâmetros

pStream
Um ponteiro para um fluxo. Esse fluxo é fornecido pelo Shell.

dwGrfMode
Modo de acesso ao fluxo.

Valor de retorno

S_OK se a operação de carga for bem-sucedida; caso contrário, HRESULT com um código de erro.

Comentários

Você pode substituir esse método em uma classe derivada para personalizar como carregar dados do fluxo.

CDocument::m_bGetThumbnailMode

Especifica que o objeto CDocument foi criado por dllhost para miniaturas. Deve ser verificado em CView::OnDraw.

BOOL m_bGetThumbnailMode;

Comentários

TRUE indica que o documento foi criado por dllhost para miniaturas.

CDocument::m_bPreviewHandlerMode

Especifica que o objeto CDocument foi criado por prevhost para Visualização Avançada. Deve ser verificado em CView::OnDraw.

BOOL m_bPreviewHandlerMode;

Comentários

TRUE indica que o documento foi criado por prevhost para Visualização Avançada.

CDocument::m_bSearchMode

Especifica que o objeto CDocument foi criado pelo indexador por ou outro aplicativo de pesquisa.

BOOL m_bSearchMode;

Comentários

TRUE indica que o objeto foi criado pelo indexador por ou outro aplicativo de pesquisa.

CDocument::m_clrRichPreviewBackColor

Especifica a cor da tela de fundo da janela de Visualização Avançada. Essa cor é definida pelo host.

COLORREF m_clrRichPreviewBackColor;

Comentários

CDocument::m_clrRichPreviewTextColor

Especifica a cor de primeiro plano da janela de Visualização Avançada. Essa cor é definida pelo host.

COLORREF m_clrRichPreviewTextColor;

Comentários

CDocument::m_lfRichPreviewFont

Especifica a fonte de texto para a janela de Visualização Avançada. Essas informações de fonte são definidas pelo host.

CFont m_lfRichPreviewFont;

Comentários

CDocument::OnBeforeRichPreviewFontChanged

Chamado antes que a fonte de Visualização Avançada seja alterada.

virtual void OnBeforeRichPreviewFontChanged();

Comentários

CDocument::OnChangedViewList

Chamado pela estrutura depois que uma exibição é adicionada ou removida do documento.

virtual void OnChangedViewList();

Comentários

A implementação padrão dessa função verifica se a última exibição está sendo removida e, nesse caso, exclui o documento. Substitua essa função se você quiser executar um processamento especial quando a estrutura adicionar ou remover uma exibição. Por exemplo, se você quiser que um documento permaneça aberto mesmo quando não houver exibições anexadas a ele, substitua essa função.

CDocument::OnCloseDocument

Chamado pela estrutura quando o documento é fechado, normalmente como parte do comando Fechar arquivo.

virtual void OnCloseDocument();

Comentários

A implementação padrão dessa função destrói todos os quadros usados para exibir o documento, fecha a exibição, limpa o conteúdo do documento e chama a função membro DeleteContents para excluir os dados do documento.

Substitua essa função se você quiser executar processamento de limpeza especial quando a estrutura fecha um documento. Por exemplo, se o documento representa um registro em um banco de dados, talvez você queira substituir essa função para fechar o banco de dados. Você deve chamar a versão de classe base dessa função na substituição.

CDocument::OnCreatePreviewFrame

Chamado pela estrutura quando ela precisa criar um quadro de visualização para Visualização Avançada.

virtual BOOL OnCreatePreviewFrame();

Valor de retorno

Retorna TRUE se o painel foi criado com êxito; caso contrário, FALSE.

Comentários

CDocument::OnDocumentEvent

Chamado pela estrutura em resposta a um evento de documento.

virtual void OnDocumentEvent(DocumentEvent deEvent);

Parâmetros

deEvent
[in] Um tipo de dados enumerado que descreve o tipo do evento.

Comentários

Eventos de documento podem afetar várias classes. Esse método é responsável por lidar com eventos de documento que afetam classes diferentes da Classe CDocument. Atualmente, a única classe que deve responder a eventos de documento é a Classe CDataRecoveryHandler. A classe CDocument tem outros métodos substituíveis responsáveis para lidar com o efeito na CDocument.

A tabela a seguir lista os valores possíveis para deEvent e os eventos aos quais eles correspondem.

Valor Evento correspondente
onAfterNewDocument Um novo documento foi criado.
onAfterOpenDocument Um novo documento foi aberto.
onAfterSaveDocument O documento foi salvo.
onAfterCloseDocument O documento foi fechado.

CDocument::OnDrawThumbnail

Substitua esse método em uma classe derivada para desenhar a miniatura.

virtual void OnDrawThumbnail(
    CDC& dc,
    LPRECT lprcBounds);

Parâmetros

dc
Uma referência a um contexto de dispositivo.

lprcBounds
Especifica um retângulo delimitador da área onde a miniatura deve ser desenhada.

Comentários

CDocument::OnFileSendMail

Envia uma mensagem por meio do host de email residente (se houver) com o documento como um anexo.

void OnFileSendMail();

Comentários

OnFileSendMail chama OnSaveDocument para serializar (salvar) documentos sem título e modificados em um arquivo temporário, que é enviado por email. Se o documento não tiver sido modificado, um arquivo temporário não é necessário e o original será enviado. OnFileSendMail carregará MAPI32.DLL se ainda não tiver sido carregado.

Uma implementação especial de OnFileSendMail para COleDocument lida com arquivos compostos corretamente.

CDocument dá suporte ao envio do documento por email se o suporte de email (MAPI) estiver presente. Consulte os artigos Tópicos de MAPI e Suporte a MAPI no MFC.

CDocument::OnLoadDocumentFromStream

Chamado pela estrutura quando ela precisa carregar os dados do documento de um fluxo.

virtual HRESULT OnLoadDocumentFromStream(
    IStream* pStream,
    DWORD grfMode);

Parâmetros

pStream
Um ponteiro para um fluxo de entrada.

grfMode
Modo de acesso ao fluxo.

Valor de retorno

S_OK se o carregamento for bem-sucedido, caso contrário, um código de erro.

Comentários

CDocument::OnNewDocument

Chamado pela estrutura como parte do comando Novo arquivo.

virtual BOOL OnNewDocument();

Valor de retorno

Diferente de zero se o documento foi inicializado com êxito; caso contrário, 0.

Comentários

A implementação padrão dessa função chama a função membro DeleteContents para garantir que o documento está e, em seguida, marca o novo documento como limpo. Substitua essa função para inicializar a estrutura de dados em um novo documento. Você deve chamar a versão de classe base dessa função na substituição.

Se o usuário escolher o comando Novo Arquivo em um aplicativo SDI, a estrutura usará essa função para reinicializar o documento existente, em vez de criar um novo. Se o usuário escolher Novo Arquivo em um aplicativo MDI (interface de vários documentos), a estrutura criará um novo documento a cada vez e chamará essa função para inicializá-lo. Você deve colocar o código de inicialização nessa função em vez de no construtor para que o comando Novo Arquivo seja eficaz em aplicativos SDI.

Observe que há casos em que OnNewDocument é chamado duas vezes. Isso ocorre quando o documento é inserido como um Servidor de Documentos ActiveX. A função é chamada pela primeira vez pelo método CreateInstance (exposto pela classe derivada de COleObjectFactory) e uma segunda vez pelo método InitNew (exposto pela classe derivada de COleServerDoc).

Exemplo

Os exemplos a seguir ilustram métodos alternativos de inicializar um objeto de documento.

// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor.  The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
   // Do initialization of MDI document here.
}

 

// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   // Do initialization of new document here.

   return TRUE;
}

 

// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example).  Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   InitMyDocument(); // call your shared initialization function

   // If your new document object requires additional initialization
   // not necessary when the document is deserialized via File Open,
   // then perform that additional initialization here.

   return TRUE;
}

CDocument::OnOpenDocument

Chamado pela estrutura como parte do comando Abrir Arquivo.

virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);

Parâmetros

lpszPathName
Aponta para o caminho do documento a ser aberto.

Valor de retorno

Diferente de zero se o documento foi carregado com êxito; caso contrário, 0.

Comentários

A implementação padrão dessa função abre o arquivo especificado, chama a função membro DeleteContents para garantir que o documento está vazio, chama CObject::Serialize para ler o conteúdo do arquivo e, em seguida, marca o documento como limpo. Substitua essa função se você quiser usar algo diferente do mecanismo de arquivo ou do mecanismo de arquivo. Por exemplo, você pode gravar um aplicativo em que os documentos representam registros em um banco de dados em vez de arquivos separados.

Se o usuário escolher o comando Abrir Arquivo em um aplicativo SDI, a estrutura usará essa função para reinicializar o objeto CDocument existente, em vez de criar um novo. Se o usuário escolher Abrir Arquivo em um aplicativo MDI, a estrutura cada vez construirá um novo objeto CDocument e chamará essa função para inicializá-lo. Você deve colocar o código de inicialização nessa função em vez de no construtor para que o comando Abrir Arquivo seja eficaz em aplicativos SDI.

Exemplo

Os exemplos a seguir ilustram métodos alternativos de inicializar um objeto de documento.

// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor.  The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
   // Do initialization of MDI document here.
}

 

// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   // Do initialization of new document here.

   return TRUE;
}

 

// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example).  Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   InitMyDocument(); // call your shared initialization function

   // If your new document object requires additional initialization
   // not necessary when the document is deserialized via File Open,
   // then perform that additional initialization here.

   return TRUE;
}

 

// Additional example of OnOpenDocument()
BOOL CExampleDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
   if (!CDocument::OnOpenDocument(lpszPathName))
   {
      return FALSE;
   }

   InitMyDocument(); // call your shared initialization function

   return TRUE;
}

CDocument::OnPreviewHandlerQueryFocus

Direciona o manipulador de visualização para retornar o HWND recuperado ao chamar a função GetFocus.

virtual HRESULT OnPreviewHandlerQueryFocus(HWND* phwnd);

Parâmetros

phwnd
[out] Quando esse método retorna, contém um ponteiro para o HWND retornado pela chamada da função GetFocus do thread em primeiro plano do manipulador de visualização.

Valor de retorno

Retorna S_OK se tiver êxito; ou retorna um valor de erro, caso contrário.

Comentários

CDocument::OnPreviewHandlerTranslateAccelerator

Direciona o manipulador de visualização para manipular um pressionamento de tecla passado da bomba de mensagem do processo no qual o manipulador de visualização está em execução.

virtual HRESULT OnPreviewHandlerTranslateAccelerator(MSG* pmsg);

Parâmetros

pmsg
[in] Um ponteiro para uma mensagem de janela.

Valor de retorno

Se a mensagem de pressionamento de tecla puder ser processada pelo manipulador de visualização, ele a processará e retornará S_OK. Se o manipulador de visualização não puder processar a mensagem de pressionamento de tecla, ele a oferecerá ao host por meio de IPreviewHandlerFrame::TranslateAccelerator. Se o host processar a mensagem, esse método retornará S_OK. Se o host não processar a mensagem, esse método retornará S_FALSE.

Comentários

CDocument::OnRichPreviewBackColorChanged

Chamado quando a cor da tela de fundo da Visualização Avançada foi alterada.

virtual void OnRichPreviewBackColorChanged();

Comentários

CDocument::OnRichPreviewFontChanged

Chamado quando a fonte da Visualização Avançada foi alterada.

virtual void OnRichPreviewFontChanged();

Comentários

CDocument::OnRichPreviewSiteChanged

Chamado quando o site da Visualização Avançada foi alterado.

virtual void OnRichPreviewSiteChanged();

Comentários

CDocument::OnRichPreviewTextColorChanged

Chamado quando a cor do texto da Visualização Avançada foi alterada.

virtual void OnRichPreviewTextColorChanged();

Comentários

CDocument::OnSaveDocument

Chamado pela estrutura como parte do comando Salvar Arquivo ou Salvar Arquivo Como.

virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);

Parâmetros

lpszPathName
Aponta para o caminho totalmente qualificado em que o arquivo deve ser salvo.

Valor de retorno

Diferente de zero se o documento foi salvo com êxito; caso contrário, 0.

Comentários

A implementação padrão dessa função abre o arquivo especificado, chama CObject::Serialize para gravar os dados do documento no arquivo e, em seguida, marca o documento como limpo. Substitua essa função se você quiser executar processamento de limpeza especial quando a estrutura salva um documento. Por exemplo, você pode gravar um aplicativo em que os documentos representam registros em um banco de dados em vez de arquivos separados.

CDocument::OnUnloadHandler

Chamado pela estrutura quando o manipulador de visualização é descarregado.

virtual void OnUnloadHandler();

Comentários

CDocument::OnUpdateFileSendMail

Habilita o comando ID_FILE_SEND_MAIL se o suporte a email (MAPI) estiver presente.

void OnUpdateFileSendMail(CCmdUI* pCmdUI);

Parâmetros

pCmdUI
Um ponteiro para o objeto CCmdUI associado ao comando ID_FILE_SEND_MAIL.

Comentários

Caso contrário, a função remove o comando ID_FILE_SEND_MAIL do menu, incluindo separadores acima ou abaixo do item de menu, conforme apropriado. MAPI está habilitado se MAPI32.DLL estiver presente no caminho e, na seção [Email] do arquivo WIN.INI, MAPI=1. A maioria dos aplicativos coloca esse comando no menu Arquivo.

CDocument dá suporte ao envio do documento por email se o suporte de email (MAPI) estiver presente. Consulte os artigos Tópicos de MAPI e Suporte a MAPI no MFC.

CDocument::PreCloseFrame

Essa função membro é chamada pela estrutura antes que a janela com moldura seja destruída.

virtual void PreCloseFrame(CFrameWnd* pFrame);

Parâmetros

pFrame
Ponteiro para o CFrameWnd que contém o objeto CDocument associado.

Comentários

Ele pode ser substituído para fornecer limpeza personalizada, mas lembre-se de chamar a classe base também.

O padrão de PreCloseFrame não faz nada em CDocument. As classes derivadas de CDocument COleDocument e CRichEditDoc usam essa função membro.

CDocument::ReadNextChunkValue

Lê o valor da próxima parte.

virtual BOOL ReadNextChunkValue(IFilterChunkValue** ppValue);

Parâmetros

ppValue
[out] Quando a função retorna, ppValue contém o valor que foi lido.

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

CDocument::ReleaseFile

Essa função membro é chamada pela estrutura para liberar um arquivo, disponibilizando-o para uso por outros aplicativos.

virtual void ReleaseFile(
    CFile* pFile,
    BOOL bAbort);

Parâmetros

pFile
Um ponteiro para o objeto CFile a ser liberado.

bAbort
Especifica se o arquivo deve ser liberado usando CFile::Close ou CFile::Abort. FALSE se o arquivo deverá ser liberado usando CFile::Close; TRUE se o arquivo deverá ser liberado usando CFile::Abort.

Comentários

Se bAbort for TRUE, ReleaseFile chamará CFile::Abort e o arquivo será liberado. CFile::Abort não lançará uma exceção.

Se bAbort for FALSE, ReleaseFile chamará CFile::Close e o arquivo será liberado.

Substitua essa função membro para exigir uma ação do usuário antes que o arquivo seja liberado.

CDocument::RemoveChunk

Remove uma parte com o GUID especificado.

virtual void RemoveChunk(
    REFCLSID guid,
    DWORD pid);

Parâmetros

Guid
Especifica o GUID de uma parte a ser removida.

Pid
Especifica o PID de uma parte a ser removida.

Comentários

CDocument::RemoveView

Chame essa função para desanexar uma exibição de um documento.

void RemoveView(CView* pView);

Parâmetros

pView
Aponta para a exibição que está sendo removida.

Comentários

Essa função remove a exibição especificada da lista de exibições associada ao documento; também define o ponteiro do documento de exibição como NULL. Essa função é chamada pela estrutura quando uma janela com moldura é fechada ou um painel de uma janela separadora é fechado.

Chame essa função somente se você estiver desanexando manualmente uma exibição. Normalmente, você permitirá que a estrutura desanexe documentos e exibições definindo um objeto CDocTemplate para associar uma classe de documento, classe de exibição e a classe de janela com moldura.

Confira o exemplo em AddView para ver uma implementação de exemplo.

CDocument::ReportSaveLoadException

Chamado se uma exceção for lançada (normalmente um CFileException ou CArchiveException) ao salvar ou carregar o documento.

virtual void ReportSaveLoadException(
    LPCTSTR lpszPathName,
    CException* e,
    BOOL bSaving,
    UINT nIDPDefault);

Parâmetros

lpszPathName
Aponta para o nome do documento que estava sendo salvo ou carregado.

e
Aponta para a exceção foi lançada. Pode ser NULL.

bSaving
Sinalizador indicando qual operação estava em andamento. Diferente de zero se o documento estava sendo salvo; 0 se o documento estava sendo carregado.

nIDPDefault
Identificador da mensagem de erro a ser exibida se a função não especificar uma mais específica.

Comentários

A implementação padrão examina o objeto de exceção e procura uma mensagem de erro que descreve especificamente a causa. Se uma mensagem específica não for encontrada ou se e for NULL, a mensagem geral especificada pelo parâmetro nIDPDefault será usada. Em seguida, a função exibe uma caixa de mensagem contendo a mensagem de erro. Substitua essa função se você quiser fornecer mensagens de falha adicionais e personalizadas. Essa é uma substituição avançada.

CDocument::SaveModified

Chamado pela estrutura antes que um documento modificado seja fechado.

virtual BOOL SaveModified();

Valor de retorno

Diferente de zero se for seguro continuar e fechar o documento; 0 se o documento não deverá ser fechado.

Comentários

A implementação padrão dessa função exibe uma caixa de mensagem perguntando ao usuário se deve salvar as alterações no documento, se alguma tiver sido feita. Substitua essa função se o programa exigir um procedimento de solicitação diferente. Essa é uma substituição avançada.

CDocument::SetChunkValue

Define um valor de parte.

virtual BOOL SetChunkValue (IFilterChunkValue* pValue);

Parâmetros

pValue
Especifica um valor de parte a ser definido.

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

CDocument::SetModifiedFlag

Chame essa função depois que tiver feito modificações no documento.

virtual void SetModifiedFlag(BOOL bModified = TRUE);

Parâmetros

bModified
Sinalizador indicando se o documento foi modificado.

Comentários

Ao chamar essa função de forma consistente, você garante que a estrutura solicite que o usuário salve as alterações antes de fechar um documento. Normalmente, você deve usar o valor padrão de TRUE para o parâmetro bModified. Para marcar um documento como limpo (não modificado), chame essa função com um valor de FALSE.

CDocument::SetPathName

Chame essa função para obter o caminho totalmente qualificado do arquivo de disco do documento.

virtual void SetPathName(
    LPCTSTR lpszPathName,
    BOOL bAddToMRU = TRUE);

Parâmetros

lpszPathName
Aponta para a cadeia de caracteres a ser usada como o caminho para o documento.

bAddToMRU
Determina se o nome do arquivo é adicionado à lista de arquivos MRU (usado mais recentemente). Se TRUE, o nome do arquivo foi adicionado; se FALSE, ele não foi adicionado.

Comentários

Dependendo do valor de bAddToMRU o caminho, é adicionado ou não adicionado à lista MRU mantida pelo aplicativo. Observe que alguns documentos não estão associados a um arquivo de disco. Chame essa função somente se você estiver substituindo a implementação padrão para abrir e salvar arquivos usados pela estrutura.

CDocument::SetTitle

Chame essa função para especificar o título do documento (a cadeia de caracteres exibida na barra de título de uma janela com moldura).

virtual void SetTitle(LPCTSTR lpszTitle);

Parâmetros

lpszTitle
Aponta para a cadeia de caracteres a ser usada como o título do documento.

Comentários

Chamar essa função atualiza os títulos de todas as janelas com moldura que exibem o documento.

CDocument::UpdateAllViews

Chame essa função após o documento ter sido modificado.

void UpdateAllViews(
    CView* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL);

Parâmetros

pSender
Aponta para a exibição que modificou o documento ou para NULL se todas as exibições devem ser atualizadas.

lHint
Contém informações sobre a modificação.

pHint
Aponta para um objeto que armazena informações sobre a modificação.

Comentários

Você deve chamar essa função depois de chamar a função membro SetModifiedFlag. Essa função informa em cada exibição anexada ao documento, exceto a exibição especificada por pSender, que o documento foi modificado. Normalmente, você chama essa função pela classe de exibição depois que o usuário altera o documento por meio de uma exibição.

Essa função chama a função membro CView::OnUpdate para cada uma das exibições do documento, exceto a exibição de envio, passando pHint e lHint. Use esses parâmetros para passar informações para as exibições sobre as modificações feitas no documento. É possível codificar informações usando lHint e/ou você pode definir uma classe derivada de CObject para armazenar informações sobre as modificações e passar um objeto dessa classe usando pHint. Substitua a função membro CView::OnUpdate na classe derivada de CView para otimizar a atualização da exibição do modo de exibição com base nas informações passadas.

Exemplo

void CExampleDoc::OnUpdateAllViews()
{
   UpdateAllViews(NULL);
}

Confira também

Exemplo de MFC MDIDOCVW
Exemplo de MFC SNAPVW
Exemplo de MFC NPP
Classe CCmdTarget
Gráfico da hierarquia
Classe CCmdTarget
Classe CView
Classe CDocTemplate