Duas maneiras para criar um objeto CArchive
Há duas maneiras para criar um CArchive objeto:
Criação implícita de um objeto CArchive por meio da estrutura
Criação explícita de um objeto CArchive
Criação implícita de um objeto CArchive por meio da estrutura
Forma mais comum e fácil, é permitir que a estrutura de criar um CArchive o objeto para o documento em nome da salvar, salvar como e comandos Abrir no menu arquivo.
Eis o que a estrutura faz quando o usuário de seu aplicativo emite o comando Salvar como no menu Arquivo:
Apresenta o Salvar como caixa de diálogo e obtém o nome do usuário.
Abre o arquivo chamado pelo usuário como um CFile objeto.
Cria um CArchive objeto que aponta para esse CFile objeto.Na criação de CArchive de objeto, a estrutura define o modo de "armazenar" (gravar, serializar), em oposição a "carga" (ler, desserializar).
Chamadas a Serialize função definida no seu CDocument-derivado classe, passando uma referência para o CArchive objeto.
O documento Serialize função grava dados para o CArchive de objeto, conforme explicado em breve.Após retornar de sua Serialize função, o framework destrói o CArchive objeto e, em seguida o CFile objeto.
Assim, se você permitir que a estrutura de criar o CArchive de objeto de documento, tudo que você precisa fazer é implementar o documento Serialize função que grava e lê de e para o arquivamento.Você também deve implementar Serialize de qualquer CObject-derivado objetos que o documento Serialize função 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, existem outras ocasiões em que é necessário um CArchive objeto.Por exemplo, convém para serializar os dados e para a área de transferência, representado por um CSharedFile objeto.Ou talvez queira usar uma interface de usuário para salvar um arquivo que é diferente da oferecida pela estrutura.Nesse caso, você pode criar explicitamente um CArchive objeto.Você fazer isso da mesma forma que a estrutura faz, usando o procedimento a seguir.
Para criar explicitamente um objeto de CArchive
Construir um CFile objeto ou um objeto derivado de CFile.
Passar o CFile o objeto para o construtor para 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 para ou do arquivo.O Serialize a função de um objeto verifica esse estado chamando o IsStoring função para o objeto de arquivamento.
Quando você terminar de armazenar ou carregar dados para ou a partir de CArchive de objeto, fechá-lo.Embora o CArchive (e CFile) objetos automaticamente fechará o arquivamento (e arquivos), é recomendável fazer isso explicitamente desde que ela facilita a recuperação de erros.Para obter mais informações sobre manipulação de erros, consulte o artigo exceções: detectar e excluir exceções.
Para fechar o objeto CArchive
O exemplo a seguir ilustra como fechar o CArchive objeto:
archive.Close(); theFile.Close();