Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Há duas maneiras de criar um CArchive objeto:
Criação implícita de um objeto CArchive por meio da Estrutura
A maneira mais comum e mais 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.
Veja o que a estrutura faz quando o usuário do aplicativo emite o comando Salvar como no menu Arquivo:
Apresenta a caixa de diálogo Salvar como e obtém o nome do arquivo do usuário.
Abre o arquivo nomeado pelo usuário como um
CFileobjeto.Cria um
CArchiveobjeto que aponta para esseCFileobjeto. Ao criar oCArchiveobjeto, a estrutura define o modo como "armazenar" (gravar, serializar), em vez de "carregar" (ler, desserializar).Chama a função
Serializedefinida em sua classe derivadaCDocument, passando-a uma referência ao objetoCArchive.
Em seguida, a função do Serialize documento grava dados no CArchive objeto, conforme explicado em breve. Após o retorno de sua função Serialize, a estrutura destrói o objeto CArchive e, em seguida, o objeto CFile.
Portanto, se você permitir que a estrutura crie o objeto CArchive para o seu documento, basta implementar a função Serialize do documento que grava e lê de e para o arquivo. Você também precisa implementar Serialize para qualquer objeto derivado de CObject que a função do documento Serialize por sua vez serializa direta ou indiretamente.
Criação explícita de um objeto CArchive
Além de serializar um documento por meio da estrutura, há outras ocasiões em que você pode precisar de um CArchive objeto. Por exemplo, talvez você queira serializar dados de e para a Área de Transferência, representados por um objeto CSharedFile. Ou talvez você queira usar uma interface do usuário para salvar um arquivo diferente daquele oferecido pela estrutura. Nesse caso, você pode criar explicitamente um CArchive objeto. Você faz isso da mesma maneira que o framework faz, usando o seguinte procedimento.
Para criar explicitamente um objeto CArchive
Construir um
CFileobjeto ou um objeto derivado deCFile.Passe o objeto
CFilepara o construtor deCArchive, 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 construtor
CArchiveé um valor enumerado que especifica se o arquivo será usado para armazenar ou carregar dados de ou para o arquivo. ASerializefunção de um objeto verifica esse estado chamando aIsStoringfunção para o objeto de arquivo.
Quando terminar de armazenar ou carregar dados de ou para o objeto CArchive, feche-o. Embora os objetos CArchive (e CFile) fechem automaticamente o arquivo (e o arquivo), é uma boa prática fazer isso explicitamente, pois facilita a recuperação de erros. Para obter mais informações sobre o tratamento de erros, consulte o artigo Exceções: Capturando e excluindo exceções.
Para fechar o objeto CArchive
O exemplo a seguir ilustra como fechar o
CArchiveobjeto:archive.Close(); theFile.Close();