Compartilhar via


CDocument::OnOpenDocument

Chamado pela estrutura como parte do comando de Arquivo Aberto.

virtual BOOL OnOpenDocument(
   LPCTSTR lpszPathName 
);

Parâmetros

  • lpszPathName
    Pontos o caminho do documento a ser aberto.

Valor de retorno

Diferente de zero se o documento foi carregado com êxito; se não 0.

Comentários

A implementação padrão de essa função abre o arquivo especificado, chama a função de membro de DeleteContents para garantir que o documento está vazio, chama CObject::Serialize para ler o conteúdo do arquivo, e marca no documento como limpa.Substituir essa função se você desejar usar algo diferente do mecanismo do arquivamento ou o mecanismo de arquivo.Por exemplo, você pode escrever um aplicativo onde os documentos representassem registros em um banco de dados em vez de arquivos separados.

Se o usuário decidir o comando de Arquivo Abrir em um aplicativo de SDI, a estrutura usa essa função para reinicializar o objeto existente de CDocument , em vez de criar um novo.Se o usuário escolher abrir Arquivo em um aplicativo MDI, compilações de estrutura um novo objeto de CDocument cada vez e chamar em essa função inicializá-la.Você deve colocar seu código de inicialização em esta função em vez no construtor para o comando de Abrir Arquivo é eficiente em aplicativos de SDI.

Exemplo

Os exemplos a seguir ilustram métodos alternativas para 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;
}

Requisitos

Cabeçalho: afxwin.h

Consulte também

Referência

Classe de CDocument

Gráfico de hierarquia

CDocument::DeleteContents

CDocument::OnCloseDocument

CDocument::OnNewDocument

CDocument::OnSaveDocument

CDocument::ReportSaveLoadException

CObject::Serialize