Partilhar via


Duas maneiras de criar um objeto CArchive

Há duas maneiras de criar um CArchive objeto:

Criação implícita de um objeto CArchive através do Framework

A maneira mais comum e fácil é permitir que a estrutura crie um CArchive objeto para seu documento em nome dos comandos Salvar, Salvar como e Abrir no menu Arquivo.

Aqui está o que a estrutura faz quando o usuário do seu aplicativo emite o comando Salvar como no menu Arquivo:

  1. Apresenta a caixa de diálogo Salvar como e obtém o nome do arquivo do usuário.

  2. Abre o arquivo nomeado pelo usuário como um CFile objeto.

  3. Cria um CArchive objeto que aponta para esse CFile objeto. Ao criar o CArchive objeto, a estrutura define o modo para "armazenar" (gravar, serializar), em oposição a "carregar" (ler, desserializar).

  4. Chama a função Serialize definida na sua classe derivada CDocument, passando uma referência ao objeto CArchive.

A função do Serialize do seu documento em seguida grava dados no objeto CArchive, conforme explicado em breve. Ao retornar da sua Serialize função, o framework destrói o CArchive objeto e, em seguida, o CFile objeto.

Assim, se você permitir que a estrutura crie o CArchive objeto para o documento, tudo o que você precisa fazer é implementar a função do Serialize documento que grava e lê de e para o arquivo. Você também tem de implementar Serialize para quaisquer objetos derivados de CObject que a função de Serialize do documento, por sua vez, serializa de forma direta ou indireta.

Criação explícita de um objeto CArchive

Além de serializar um documento através da estrutura, há outras ocasiões em que você pode precisar de um CArchive objeto. Por exemplo, poderá querer serializar dados para e a partir da Área de Transferência, representados por um objeto CSharedFile. Ou, você pode querer usar uma interface de usuário para salvar um arquivo que é diferente do oferecido pela estrutura. Nesse caso, você pode criar explicitamente um CArchive objeto. Você faz isso da mesma forma que o framework faz, usando o procedimento a seguir.

Para criar explicitamente um objeto CArchive

  1. Construir um CFile objeto ou um objeto derivado de CFile.

  2. Passe o CFile objeto para o construtor de CArchive, conforme mostrado no exemplo a seguir:

    CFile theFile;
    theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite);
    CArchive archive(&theFile, CArchive::store);
    

    O segundo argumento para o CArchive construtor é um valor enumerado que especifica se o arquivo será usado para armazenar ou carregar dados de ou para o arquivo. A Serialize função de um objeto verifica esse estado chamando a IsStoring função para o objeto archive.

Quando terminar de armazenar ou carregar dados de ou para o objeto, feche-o CArchive . Embora os objetos CArchive (e CFile) fechem automaticamente o arquivo (e o ficheiro), é uma boa prática fazê-lo explicitamente, pois facilita a recuperação de erros. Para obter mais informações sobre tratamento de erros, consulte o artigo Exceções: capturando e excluindo exceções.

Para fechar o objeto CArchive

  1. O exemplo a seguir ilustra como fechar o CArchive objeto:

    archive.Close();
    theFile.Close();
    

Ver também

Serialização: Serializando um objeto