Partilhar via


CDocument Classe

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Fornece a funcionalidade básica para classes de documentos definidas pelo utilizador.

Sintaxe

class CDocument : public CCmdTarget

Membros

Construtores Públicos

Nome Description
CDocument::CDocument Constrói um CDocument objeto.

Métodos Públicos

Nome Description
CDocument::AddView Anexa uma vista ao documento.
CDocument::BeginReadChunks Inicializa a leitura de blocos.
CDocument::CanCloseFrame Avançado overridable; chamado antes de fechar uma janela de frames ao visualizar este documento.
CDocument::ClearChunkList Limpa a lista de blocos.
CDocument::ClearPathName Limpa o caminho do objeto documento.
CDocument::DeleteContents Chamado para fazer a limpeza do documento.
CDocument::FindChunk Procura um bloco com um GUID especificado.
CDocument::GetAdapter Devolve um ponteiro para a interface de implementação IDocument de objetos.
CDocument::GetDocTemplate Devolve um ponteiro para o modelo do documento que descreve o tipo do documento.
CDocument::GetFile Devolve um ponteiro para o objeto desejado CFile .
CDocument::GetFirstViewPosition Devolve a posição do primeiro na lista de opiniões; Usado para iniciar a iteração.
CDocument::GetNextView Percorre a lista de opiniões associadas ao documento.
CDocument::GetPathName Devolve o caminho do ficheiro de dados do documento.
CDocument::GetThumbnail Chamado para criar um bitmap a ser usado pelo fornecedor de miniaturas para mostrar miniaturas.
CDocument::GetTitle Devolve o título do documento.
CDocument::InitializeSearchContent Chamado para inicializar conteúdo de pesquisa para o Gestor de Pesquisa.
CDocument::IsModified Indica se o documento foi modificado desde a última vez que foi guardado.
CDocument::IsSearchAndOrganizeHandler Indica se esta instância do CDocument objeto foi criada para o handler Search & Organizar.
CDocument::LoadDocumentFromStream Chamado para carregar os dados do documento do fluxo.
CDocument::OnBeforeRichPreviewFontChanged Chamado antes de a fonte do Rich Preview ser alterada.
CDocument::OnChangedViewList Chamado após uma visualização ser adicionada ou removida do documento.
CDocument::OnCloseDocument Liguei para encerrar o documento.
CDocument::OnCreatePreviewFrame É chamado pelo framework quando este precisa de criar um frame de pré-visualização para o Pré-visualização Rica.
CDocument::OnDocumentEvent Chamado pelo framework em resposta a um evento de documento.
CDocument::OnDrawThumbnail Substitua este método numa classe derivada para desenhar o conteúdo da miniatura.
CDocument::OnLoadDocumentFromStream É chamado pelo framework quando este precisa de carregar os dados do documento do stream.
CDocument::OnNewDocument Liguei para criar um novo documento.
CDocument::OnOpenDocument Chamado para abrir um documento existente.
CDocument::OnPreviewHandlerQueryFocus Direciona o handler de pré-visualização para devolver o HWND from a chamar a GetFocus Função.
CDocument::OnPreviewHandlerTranslateAccelerator Direciona o gestor de pré-visualização para tratar de uma tecla pressionada pela mensagem do processo em que o manipulador de pré-visualização está a correr.
CDocument::OnRichPreviewBackColorChanged Chamada quando a cor de fundo do Pré-visualização Rica mudou.
CDocument::OnRichPreviewFontChanged Chamada quando a fonte do Rich Preview mudou.
CDocument::OnRichPreviewSiteChanged Ligou quando o site do Rich Preview mudou.
CDocument::OnRichPreviewTextColorChanged Chamada quando a cor do texto do Pré-visualização Rica mudou.
CDocument::OnSaveDocument Chamei para guardar o documento no disco.
CDocument::OnUnloadHandler Chamado pelo framework quando o gestor de pré-visualização está a ser descarregado.
CDocument::PreCloseFrame Chamada antes de fechar a janela da moldura.
CDocument::ReadNextChunkValue Lê o próximo valor do bloco.
CDocument::ReleaseFile Liberta um ficheiro para o tornar disponível para uso por outras aplicações.
CDocument::RemoveChunk Remove um pedaço com especificado GUID.
CDocument::RemoveView Destaca uma vista do documento.
CDocument::ReportSaveLoadException Avançado overridable; chamada quando uma operação de abrir ou guardar não pode ser concluída devido a uma exceção.
CDocument::SaveModified Avançado overridable; Liguei para perguntar ao utilizador se o documento deve ser guardado.
CDocument::SetChunkValue Define um valor de bloco.
CDocument::SetModifiedFlag Define uma bandeira a indicar que modificou o documento desde a última vez que foi guardado.
CDocument::SetPathName Define o caminho do ficheiro de dados utilizado pelo documento.
CDocument::SetTitle Define o título do documento.
CDocument::UpdateAllViews Notifica todas as opiniões de que o documento foi modificado.

Métodos Protegidos

Nome Description
CDocument::OnFileSendMail Envia uma mensagem de correio com o documento em anexo.
CDocument::OnUpdateFileSendMail Ativa o comando Enviar Correio se houver suporte de correio.

Membros de Dados Públicos

Nome Description
CDocument::m_bGetThumbnailMode Especifica que CDocument o objeto foi criado por dllhost para miniaturas. Deveria ser registado CView::OnDraw.
CDocument::m_bPreviewHandlerMode Especifica que CDocument o objeto foi criado por prevhost para Rich Preview. Deveria ser registado CView::OnDraw.
CDocument::m_bSearchMode Especifica que CDocument o objeto foi criado por indexador ou outra aplicação de pesquisa.
CDocument::m_clrRichPreviewBackColor Especifica a cor de fundo da janela de Visualização Rica. Esta cor é definida pelo hospedeiro.
CDocument::m_clrRichPreviewTextColor Especifica a cor do primeiro plano da janela de Visualização Rica. Esta cor é definida pelo hospedeiro.
CDocument::m_lfRichPreviewFont Especifica a fonte de texto para a janela de Visualização Enriquecida. Esta informação da fonte é definida por anfitrião.

Observações

Um documento representa a unidade de dados que o utilizador normalmente abre com o comando Abrir Ficheiro e guarda com o comando Guardar Ficheiro.

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

Uma aplicação pode suportar mais do que um tipo de documento; Por exemplo, uma aplicação pode suportar tanto folhas de cálculo como documentos de texto. Cada tipo de documento tem um modelo de documento associado; O modelo do documento especifica que recursos (por exemplo, menu, ícone ou tabela aceleradora) são usados para esse tipo de documento. Cada documento contém um ponteiro para o seu objeto associado CDocTemplate .

Os utilizadores interagem com um documento através do CView (s) objeto(s) associado(s) a ele(s). Uma vista renderiza uma imagem do documento numa janela de frames e interpreta a entrada do utilizador como operações no documento. Um documento pode ter múltiplas vistas associadas. Quando o utilizador abre uma janela num documento, o framework cria uma vista e anexa-a ao documento. O modelo do documento especifica que tipo de janela de vista e frame são usados para exibir cada tipo de documento.

Os documentos fazem parte do encaminhamento de comandos padrão do framework e, consequentemente, recebem comandos de componentes padrão da interface de utilizador (como o item de menu de Guardar Ficheiro). Um documento recebe comandos encaminhados pela visualização ativa. Se o documento não gerir um determinado comando, encaminha o comando para o modelo do documento que o gere.

Quando os dados de um documento são modificados, cada uma das suas opiniões deve refletir essas modificações. CDocument fornece ao UpdateAllViews membro a função para notificar as opiniões sobre tais alterações, para que as vistas possam repintar-se conforme necessário. O framework também solicita ao utilizador que guarde um ficheiro modificado antes de o fechar.

Para implementar documentos numa aplicação típica, 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.

  • Implementar funções de membro para ler e modificar os dados do documento. As opiniões do documento são os utilizadores mais importantes destas funções membros.

  • Sobrescrita a CObject::Serialize função membro na tua classe de documento para escrever e ler os dados do documento para e a partir do disco.

CDocument suporta o envio do seu documento por correio se houver suporte por correio (MAPI). Consulte os artigos MAPI e Suporte MAPI no MFC.

Para mais informações sobre CDocument, veja Serialização, Tópicos de Arquitetura de Documentos/Visualizações e Criação de Documentos/Vistas.

Hierarquia de herança

CObject

CCmdTarget

CDocument

Requerimentos

Cabeçalho:afxwin.h

CDocument::AddView

Chame esta função para anexar uma vista ao documento.

void AddView(CView* pView);

Parâmetros

pView
Aponta para a opinião que está a ser acrescentada.

Observações

Esta função acrescenta a vista especificada à lista de vistas associadas ao documento; a função também define o ponteiro do documento da vista para este documento. A estrutura chama esta função ao anexar um objeto de vista recém-criado a um documento; isto ocorre em resposta a um comando Ficheiro Novo, Abrir Ficheiro ou Nova Janela, ou quando uma janela divisora é dividida.

Chame esta função apenas se estiver a criar e anexar manualmente uma vista. Normalmente, vais deixar que o framework ligue documentos e vistas definindo um CDocTemplate objeto para associar uma classe de documento, uma classe de vista e uma classe de janela de frame.

Example

// 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 de blocos.

virtual void BeginReadChunks ();

Observações

CDocument::CanCloseFrame

Chamada pela framework antes de uma janela de frame que exibe o documento ser fechada.

virtual BOOL CanCloseFrame(CFrameWnd* pFrame);

Parâmetros

pFrame
Aponta para a janela de moldura de uma vista anexada ao documento.

Valor de retorno

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

Observações

A implementação padrão verifica se existem outras janelas de frames a mostrar o documento. Se a janela de frame especificada for a última a mostrar o documento, a função pede ao utilizador para guardar o documento caso tenha sido modificado. Anule esta função se quiser realizar um processamento especial quando uma janela de frame estiver fechada. Isto é um ultrapassível avançado.

CDocument::CDocument

Constrói um CDocument objeto.

CDocument();

Observações

A estrutura trata da criação de documentos por si. Sobrepor a OnNewDocument função membro para realizar a inicialização por documento; isto é particularmente importante em aplicações de interface de documento único (SDI).

CDocument::ClearChunkList

Limpa a lista de blocos.

virtual void ClearChunkList ();

Observações

CDocument::ClearPathName

Limpa o caminho do objeto documento.

virtual void ClearPathName();

Observações

Limpar o caminho de um CDocument objeto faz com que a aplicação avise o utilizador quando o documento é guardado novamente. Isto faz com que um comando de Guardar se comporte como um comando de Guardar Como .

CDocument::DeleteContents

Chamado pelo framework para eliminar os dados do documento sem destruir o CDocument objeto em si.

virtual void DeleteContents();

Observações

É chamado pouco antes de o documento ser destruído. Também é chamado para garantir que um documento está vazio antes de ser reutilizado. Isto é particularmente importante para uma aplicação SDI, que utiliza apenas um documento; O documento é reutilizado sempre que o utilizador cria ou abre outro documento. Chame esta função para implementar um comando "Editar Apagar Tudo" ou semelhante que apague todos os dados do documento. A implementação padrão desta função não faz nada. Substitua esta função para apagar os dados do seu documento.

Example

// 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 um bloco com um GUID especificado.

virtual POSITION FindChunk(
    REFCLSID guid,
    DWORD pid);

Parâmetros

guid
Especifica o GUID de um bloco a encontrar.

pid
Especifica um PID de um bloco a encontrar.

Valor de retorno

Posição na lista interna de blocos se for bem-sucedido. Caso contrário NULL.

Observações

CDocument::GetAdapter

Devolve um ponteiro para um objeto que implementa a IDocument interface.

virtual ATL::IDocument* GetAdapter();

Valor de retorno

Um apontador para um objeto que implementa a IDocument interface.

Observações

CDocument::GetDocTemplate

Chame esta função para obter um apontador para o modelo de documento deste tipo de documento.

CDocTemplate* GetDocTemplate() const;

Valor de retorno

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

Example

// 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 esta função membro para obter um ponteiro para um CFile objeto.

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

Parâmetros

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

pError
Um apontador para um objeto de exceção de ficheiro existente que indica o estado de conclusão da operação.

nOpenFlags
Partilha e modo de acesso. Especifica a ação a tomar ao abrir o ficheiro. Pode combinar as opções listadas no construtor CFile::CFile CFile usando o operador bit a bit OR (|). São necessárias uma permissão de acesso e uma opção de partilha; os modeCreate modos e modeNoInherit são opcionais.

Valor de retorno

Um ponteiro para um CFile objeto.

CDocument::GetFirstViewPosition

Chame esta função para obter a posição da primeira vista na lista de vistas associadas ao documento.

virtual POSITION GetFirstViewPosition() const;

Valor de retorno

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

Example

//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 esta função para iterar por todas as vistas do documento.

virtual CView* GetNextView(POSITION& rPosition) const;

Parâmetros

rPosition
Uma referência a um POSITION valor devolvido por uma chamada anterior às GetNextView funções membros ou GetFirstViewPosition . Este valor não pode ser NULL.

Valor de retorno

Um indicador para a vista identificada por rPosition.

Observações

A função devolve a vista identificada por rPosition e depois define rPosition para o POSITION valor da próxima vista na lista. Se a vista recuperada for a última na lista, então rPosition é definida como NULL.

Example

//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 esta função para obter o caminho totalmente qualificado do ficheiro de disco do documento.

const CString& GetPathName() const;

Valor de retorno

O caminho totalmente qualificado do documento. Esta cadeia fica vazia se o documento não tiver sido guardado ou não tiver um ficheiro de disco associado.

CDocument::GetThumbnail

Cria um bitmap para ser usado pelo fornecedor de miniaturas para mostrar a miniatura.

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

Parâmetros

cx
Especifica a largura e altura do bitmap.

phbmp
Contém um handle para um bitmap, quando a função retorna com sucesso.

pdwAlpha
Contém uma DWORD especificação do valor do canal alfa, quando a função retorna com sucesso.

Valor de retorno

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

Observações

CDocument::GetTitle

Chame esta função para obter o título do documento, que normalmente é derivado do nome do ficheiro do documento.

const CString& GetTitle() const;

Valor de retorno

O título do documento.

CDocument::InitializeSearchContent

Chamado para inicializar conteúdo de pesquisa para o Gestor de Pesquisa.

virtual void InitializeSearchContent ();

Observações

Substitua este método numa classe derivada para inicializar o conteúdo da pesquisa. O conteúdo deve ser uma cadeia com partes delimitadas por ";". Por exemplo, "apontar; retângulo; velho item".

CDocument::IsModified

Chame esta função para determinar se o documento foi modificado desde a última vez que foi guardado.

virtual BOOL IsModified();

Valor de retorno

Não nulo se o documento tiver sido modificado desde a última vez que foi guardado; caso contrário, 0.

CDocument::IsSearchAndOrganizeHandler

Indica se esta instância de CDocument foi criada para o handler de Pesquisa & Organização.

BOOL IsSearchAndOrganizeHandler() const;

Valor de retorno

Retorna TRUE se esta instância de CDocument foi criada para o gestor de Pesquisa & Organização.

Observações

Atualmente, esta função retorna TRUE apenas para os manipuladores de Pré-visualização Rica implementados num servidor fora do processo. Pode definir os flags apropriados (m_bPreviewHandlerMode, m_bSearchMode, m_bGetThumbnailMode) ao nível da sua aplicação para que esta função retorne TRUE.

CDocument::LoadDocumentFromStream

Chamado para carregar dados de documentos a partir de um fluxo.

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

Parâmetros

pStream
Um indicador para um riacho. Este riacho é fornecido pela Shell.

dwGrfMode
Modo de acesso ao stream.

Valor de retorno

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

Observações

Pode sobrescrever este método numa classe derivada para personalizar como carregar dados do fluxo.

CDocument::m_bGetThumbnailMode

Especifica que o CDocument objeto foi criado por dllhost para miniaturas. Deveria ser registado CView::OnDraw.

BOOL m_bGetThumbnailMode;

Observações

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

CDocument::m_bPreviewHandlerMode

Especifica que o CDocument objeto foi criado por prevhost para o Rich Preview. Deveria ser registado CView::OnDraw.

BOOL m_bPreviewHandlerMode;

Observações

TRUE indica que o documento foi criado por prevhost para o Rich Preview.

CDocument::m_bSearchMode

Especifica que o CDocument objeto foi criado por indexador ou por outra aplicação de pesquisa.

BOOL m_bSearchMode;

Observações

TRUE indica que o documento foi criado por um indexador ou por outra aplicação de pesquisa.

CDocument::m_clrRichPreviewBackColor

Especifica a cor de fundo da janela de Visualização Rica. Esta cor é definida pelo hospedeiro.

COLORREF m_clrRichPreviewBackColor;

Observações

CDocument::m_clrRichPreviewTextColor

Especifica a cor do primeiro plano da janela de Visualização Rica. Esta cor é definida pelo hospedeiro.

COLORREF m_clrRichPreviewTextColor;

Observações

CDocument::m_lfRichPreviewFont

Especifica a fonte de texto para a janela de Pré-visualização Rica. Esta informação da fonte é definida por anfitrião.

CFont m_lfRichPreviewFont;

Observações

CDocument::OnBeforeRichPreviewFontChanged

Chamado antes de a fonte Rich Preview ser alterada.

virtual void OnBeforeRichPreviewFontChanged();

Observações

CDocument::OnChangedViewList

Chamado pelo framework após uma visualização ser adicionada ou removida do documento.

virtual void OnChangedViewList();

Observações

A implementação padrão desta função verifica se a última visualização está a ser removida e, em caso afirmativo, apaga o documento. Anule esta função se quiser realizar um processamento especial quando o framework adicionar ou remover uma vista. Por exemplo, se quiser que um documento permaneça aberto mesmo sem vistas associadas, sobreponha esta função.

CDocument::OnCloseDocument

Chamada pela framework quando o documento está fechado, normalmente como parte do comando File Closure.

virtual void OnCloseDocument();

Observações

A implementação padrão desta função destrói todos os frames usados para visualizar o documento, fecha a vista, limpa o conteúdo do documento e depois chama a DeleteContents função membro para eliminar os dados do documento.

Anule esta função se quiser realizar um processamento especial de limpeza quando o framework fecha um documento. Por exemplo, se o documento representa um registo numa base de dados, pode querer sobrepor esta função para fechar a base de dados. Deves chamar a versão base desta função a partir do teu override.

CDocument::OnCreatePreviewFrame

É chamado pelo framework quando este precisa de criar um frame de pré-visualização para o Pré-visualização Rica.

virtual BOOL OnCreatePreviewFrame();

Valor de retorno

Retorna TRUE se o quadro for criado com sucesso; caso contrário FALSE.

Observações

CDocument::OnDocumentEvent

Chamado pelo framework em resposta a um evento de documento.

virtual void OnDocumentEvent(DocumentEvent deEvent);

Parâmetros

deEvent
[dentro] Um tipo de dado enumerado que descreve o tipo de evento.

Observações

Documentar eventos pode afetar várias classes. Este método é responsável pelo tratamento de eventos documentais que afetam classes diferentes da CDocument Classe. Atualmente, a única classe que tem de responder a eventos documentados é a CDataRecoveryHandler Classe. A CDocument classe tem outros métodos sobrevoáveis responsáveis por lidar com o efeito no CDocument.

A tabela seguinte lista os valores possíveis para deEvent e os eventos a que correspondem.

Valor Evento Correspondente
onAfterNewDocument Foi criado um novo documento.
onAfterOpenDocument Foi aberto um novo documento.
onAfterSaveDocument O documento foi salvo.
onAfterCloseDocument O documento foi encerrado.

CDocument::OnDrawThumbnail

Substitua este método numa classe derivada para desenhar a miniatura.

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

Parâmetros

dc
Uma referência ao contexto de um dispositivo.

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

Observações

CDocument::OnFileSendMail

Envia uma mensagem através do host de correio residente (se houver) com o documento como anexo.

void OnFileSendMail();

Observações

OnFileSendMail chamadas OnSaveDocument para serializar (guardar) documentos sem título e modificados para um ficheiro temporário, que é depois enviado por correio eletrónico. Se o documento não tiver sido modificado, não é necessário um ficheiro temporário; O original é enviado. OnFileSendMail carrega MAPI32.DLL se ainda não tiver sido carregado.

Uma implementação especial de OnFileSendMail for COleDocument gere corretamente ficheiros compostos.

CDocument suporta o envio do seu documento por correio se houver suporte por correio (MAPI). Consulte os artigos Tópicos MAPI e Suporte MAPI em MFC.

CDocument::OnLoadDocumentFromStream

É chamado pelo framework quando este precisa de carregar os dados do documento a partir de um fluxo.

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

Parâmetros

pStream
Um indicador para um stream a chegar.

grfMode
Modo de acesso ao stream.

Valor de retorno

S_OK se a carga for bem-sucedida; caso contrário, um código de erro.

Observações

CDocument::OnNewDocument

Chamado pelo framework como parte do comando File New.

virtual BOOL OnNewDocument();

Valor de retorno

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

Observações

A implementação padrão desta função chama a DeleteContents função membro para garantir que o documento está vazio e depois marca o novo documento como limpo. Substitua esta função para inicializar a estrutura de dados de um novo documento. Deves chamar a versão base desta função a partir do teu override.

Se o utilizador escolher o comando Novo Ficheiro numa aplicação SDI, o framework utiliza esta função para reinicializar o documento existente, em vez de criar um novo. Se o utilizador escolher Ficheiro Novo numa aplicação de interface de múltiplos documentos (MDI), o framework cria um novo documento a cada vez e depois chama esta função para o inicializar. Deve colocar o seu código de inicialização nesta função em vez de no construtor para que o comando File New seja eficaz em aplicações SDI.

Note-se que há casos em que OnNewDocument é chamado duas vezes. Isto ocorre quando o documento é incorporado como um Servidor de Documentos ActiveX. A função é chamada primeiro pelo CreateInstance método (exposto pela COleObjectFactoryclasse derivada de -) e uma segunda vez pelo InitNew método (exposto pela COleServerDocclasse derivada de -).

Example

Os exemplos seguintes ilustram métodos alternativos de inicialização de 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 pelo framework como parte do comando File Open.

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 sucesso; caso contrário, 0.

Observações

A implementação padrão desta função abre o ficheiro especificado, chama a DeleteContents função membro para garantir que o documento está vazio, pede CObject::Serialize para ler o conteúdo do ficheiro e depois marca o documento como limpo. Anule esta função se quiser usar algo diferente do mecanismo de arquivo ou do mecanismo de ficheiros. Por exemplo, pode escrever uma aplicação onde os documentos representam registos numa base de dados em vez de ficheiros separados.

Se o utilizador escolher o comando Abrir Ficheiro numa aplicação SDI, o framework utiliza esta função para reinicializar o objeto existente CDocument , em vez de criar um novo. Se o utilizador escolher Abrir Ficheiro numa aplicação MDI, a framework constrói um novo CDocument objeto a cada vez e depois chama essa função para o inicializar. Deve colocar o seu código de inicialização nesta função em vez de no construtor para que o comando File Open seja eficaz em aplicações SDI.

Example

Os exemplos seguintes ilustram métodos alternativos de inicialização de 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 pré-visualização para devolver o HWND recuperado ao chamar a GetFocus função.

virtual HRESULT OnPreviewHandlerQueryFocus(HWND* phwnd);

Parâmetros

phwnd
[fora] Quando este método retorna, contém um ponteiro para o HWND retornado ao chamar a GetFocus função a partir do thread de primeiro plano do handler de pré-visualização.

Valor de retorno

Retorna S_OK se for bem-sucedido; ou um valor de erro caso contrário.

Observações

CDocument::OnPreviewHandlerTranslateAccelerator

Direciona o gestor de pré-visualização para tratar de uma tecla pressionada pela mensagem do processo em que o manipulador de pré-visualização está a correr.

virtual HRESULT OnPreviewHandlerTranslateAccelerator(MSG* pmsg);

Parâmetros

pmsg
[dentro] Um apontador para uma mensagem de janela.

Valor de retorno

Se a mensagem de tecla puder ser processada pelo handler de pré-visualização, o handler processa-a e devolve S_OK. Se o gestor de pré-visualização não conseguir processar a mensagem de tecla, oferece-a ao anfitrião via IPreviewHandlerFrame::TranslateAccelerator. Se o anfitrião processar a mensagem, este método devolve S_OK. Se o anfitrião não processar a mensagem, este método devolve S_FALSE.

Observações

CDocument::OnRichPreviewBackColorChanged

Ligou quando a cor de fundo do Pré-visualização Rica mudou.

virtual void OnRichPreviewBackColorChanged();

Observações

CDocument::OnRichPreviewFontChanged

É chamada quando a fonte do Rich Preview mudou.

virtual void OnRichPreviewFontChanged();

Observações

CDocument::OnRichPreviewSiteChanged

Ligou quando o site de Pré-visualização Rica mudou.

virtual void OnRichPreviewSiteChanged();

Observações

CDocument::OnRichPreviewTextColorChanged

É chamada quando a cor do texto do Pré-visualização Rica mudou.

virtual void OnRichPreviewTextColorChanged();

Observações

CDocument::OnSaveDocument

Chamado pela framework como parte do comando Gravar ou Guardar Ficheiro Como.

virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);

Parâmetros

lpszPathName
Aponta para o caminho totalmente qualificado onde o ficheiro deve ser guardado.

Valor de retorno

Não nulo se o documento fosse guardado com sucesso; caso contrário, 0.

Observações

A implementação padrão desta função abre o ficheiro especificado, chama CObject::Serialize para escrever os dados do documento no ficheiro e depois marca o documento como limpo. Substitua esta função se quiser realizar um processamento especial quando o framework guardar um documento. Por exemplo, pode escrever uma aplicação onde os documentos representam registos numa base de dados em vez de ficheiros separados.

CDocument::OnUnloadHandler

É chamado pelo framework quando o gestor de pré-visualização é descarregado.

virtual void OnUnloadHandler();

Observações

CDocument::OnUpdateFileSendMail

Ativa o ID_FILE_SEND_MAIL comando se houver suporte de correio (MAPI).

void OnUpdateFileSendMail(CCmdUI* pCmdUI);

Parâmetros

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

Observações

Caso contrário, a função remove o ID_FILE_SEND_MAIL comando do menu, incluindo os separadores acima ou abaixo do item do menu, conforme apropriado. O MAPI está ativado se MAPI32.DLL estiver presente no caminho e, na secção [Mail] do WIN.INI ficheiro, MAPI=1. A maioria das aplicações coloca este comando no menu Ficheiro.

CDocument suporta o envio do seu documento por correio se houver suporte por correio (MAPI). Consulte os artigos Tópicos MAPI e Suporte MAPI em MFC.

CDocument::PreCloseFrame

Esta função membro é chamada pela estrutura antes de a janela da estrutura ser destruída.

virtual void PreCloseFrame(CFrameWnd* pFrame);

Parâmetros

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

Observações

Pode ser anulado para fornecer limpeza personalizada, mas certifique-se de ligar também para a classe base.

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

CDocument::ReadNextChunkValue

Lê o próximo valor do bloco.

virtual BOOL ReadNextChunkValue(IFilterChunkValue** ppValue);

Parâmetros

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

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, 0.

Observações

CDocument::ReleaseFile

Esta função membro é chamada pelo framework para libertar um ficheiro, tornando-o disponível para uso por outras aplicações.

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

Parâmetros

pFile
Um apontador para o CFile objeto a ser libertado.

bAbort
Especifica se o ficheiro deve ser lançado usando ou CFile::CloseCFile::Abort. FALSE se o ficheiro for para ser libertado usando CFile::Close; TRUE se o ficheiro for para ser lançado usando CFile::Abort.

Observações

Se bAbort for TRUE, ReleaseFile chama CFile::Abort, e o ficheiro é libertado. CFile::Abort Não vou lançar exceções.

Se bAbort for FALSE, ReleaseFile liga CFile::Close e o ficheiro é libertado.

Sobrescrita esta função membro para exigir uma ação do utilizador antes de o ficheiro ser libertado.

CDocument::RemoveChunk

Remove um pedaço com o especificado GUID.

virtual void RemoveChunk(
    REFCLSID guid,
    DWORD pid);

Parâmetros

Guid
Especifica a GUID parte de um bloco a ser removido.

Pid
Especifica a PID parte de um bloco a ser removido.

Observações

CDocument::RemoveView

Chame esta função para separar uma vista de um documento.

void RemoveView(CView* pView);

Parâmetros

pView
Aponta para a remoção da visão.

Observações

Esta função remove a vista especificada da lista de vistas associadas ao documento; também define o ponteiro do documento da vista para NULL. Esta função é chamada pelo framework quando uma janela de frame está fechada ou quando um painel de uma janela divisor está fechado.

Chama esta função apenas se estiveres a desligar manualmente uma vista. Normalmente, permite-se que a framework separe documentos e vistas definindo um CDocTemplate objeto para associar uma classe de documento, classe de vista e classe de janela de frame.

Veja o exemplo em AddView para uma implementação exemplar.

CDocument::ReportSaveLoadException

Chamado se uma exceção for lançada (normalmente um CFileException ou CArchiveException) durante o gravar 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 a ser guardado ou carregado.

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

bSaving
Bandeira indicando a operação em andamento; não nulo se o documento estivesse a ser guardado, 0 se o documento estivesse a ser carregado.

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

Observações

A implementação padrão examina o objeto exceção e procura uma mensagem de erro que descreva especificamente a causa. Se uma mensagem específica não for encontrada ou se e for NULL, é usada a mensagem geral especificada pelo nIDPDefault parâmetro. A função apresenta então uma caixa de mensagem contendo a mensagem de erro. Anule esta função se quiser fornecer mensagens adicionais de falha personalizadas. Isto é um ultrapassível avançado.

CDocument::SaveModified

Chamado pela estrutura antes de um documento modificado deve ser fechado.

virtual BOOL SaveModified();

Valor de retorno

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

Observações

A implementação padrão desta função exibe uma caixa de mensagem a perguntar ao utilizador se deve guardar as alterações ao documento, caso alguma tenha sido feita. Anule esta função se o seu programa exigir um procedimento de prompting diferente. Isto é um ultrapassível avançado.

CDocument::SetChunkValue

Define um valor de bloco.

virtual BOOL SetChunkValue (IFilterChunkValue* pValue);

Parâmetros

pValue
Especifica um valor de bloco a definir.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, 0.

Observações

CDocument::SetModifiedFlag

Ligue para esta função depois de ter feito quaisquer alterações ao documento.

virtual void SetModifiedFlag(BOOL bModified = TRUE);

Parâmetros

bModified
Flag indicando se o documento foi modificado.

Observações

Ao chamar esta função de forma consistente, assegura que o framework pede ao utilizador para guardar as alterações antes de fechar um documento. Normalmente deves usar o valor padrão de TRUE para o bModified parâmetro. Para marcar um documento como limpo (não modificado), chame esta função com um valor de FALSE.

CDocument::SetPathName

Chame esta função para especificar o caminho totalmente qualificado do ficheiro de disco do documento.

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

Parâmetros

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

bAddToMRU
Determina se o nome do ficheiro é adicionado à lista de ficheiros mais recentemente usada (MRU). Se TRUE, o nome do ficheiro for adicionado; se FALSE, não é adicionado.

Observações

Dependendo do valor do bAddToMRU caminho, é adicionado, ou não, à lista de MRU mantida pela aplicação. Note que alguns documentos não estão associados a um ficheiro de disco. Chame esta função apenas se estiver a sobrescrever a implementação padrão para abrir e guardar ficheiros usados pelo framework.

CDocument::SetTitle

Chame esta função para especificar o título do documento (a cadeia apresentada na barra de título de uma janela de moldura).

virtual void SetTitle(LPCTSTR lpszTitle);

Parâmetros

lpszTitle
Aponta para a sequência a ser usada como título do documento.

Observações

Chamar esta função atualiza os títulos de todas as janelas de frames que exibem o documento.

CDocument::UpdateAllViews

Chame esta função depois de o documento ter sido modificado.

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

Parâmetros

pSender
Aponta para a vista que modificou o documento, ou NULL se todas as vistas devem ser atualizadas.

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

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

Observações

Deve chamar esta função depois de chamar a SetModifiedFlag função membro. Esta função informa cada vista anexada ao documento, exceto a vista especificada por pSender, que o documento foi modificado. Normalmente chama esta função a partir da sua classe view depois de o utilizador ter alterado o documento através de uma view.

Esta função chama a CView::OnUpdate função membro para cada uma das vistas do documento, exceto a visualização de envio, passing pHint e lHint. Use estes parâmetros para transmitir informação às opiniões sobre as modificações feitas ao documento. Pode codificar informação usando lHint e/ou pode definir uma CObjectclasse derivada em para armazenar informação sobre as modificações e passar um objeto dessa classe usando pHint. Sobrescrita a CView::OnUpdate função membro na tua CViewclasse derivada para otimizar a atualização do ecrã da vista com base na informação passada.

Example

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

Consulte também

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