Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
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 para "armazenar" (gravar, serializar), em oposição a "carregar" (ler, desserializar).Chama a função
Serializedefinida na sua classe derivadaCDocument, passando uma referência ao objetoCArchive.
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
Construir um
CFileobjeto ou um objeto derivado deCFile.Passe o
CFileobjeto para 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
CArchiveconstrutor é 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 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
O exemplo a seguir ilustra como fechar o
CArchiveobjeto:archive.Close(); theFile.Close();