Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
CDocumentpara 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::Serializefunçã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
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