Partilhar via


Classe CDataRecoveryHandler

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

O CDataRecoveryHandler documento guarda automaticamente e restaura-os se uma aplicação sair inesperadamente.

Sintaxe

class CDataRecoveryHandler : public CObject

Membros

Construtores

Nome Description
CDataRecoveryHandler::CDataRecoveryHandler Constrói um CDataRecoveryHandler objeto.

Methods

Nome Description
CDataRecoveryHandler::AutosaveAllDocumentInfo Guarda automaticamente cada ficheiro registado na CDataRecoveryHandler turma.
CDataRecoveryHandler::AutosaveDocumentInfo Guarda automaticamente o documento especificado.
CDataRecoveryHandler::CreateDocumentInfo Adiciona um documento à lista de documentos em aberto.
CDataRecoveryHandler::D eleteAllAutosavedFilesFiles Apaga todos os ficheiros auto-salvos atuais.
CDataRecoveryHandler::D eleteAutosavedFile Apaga o ficheiro auto-salvo especificado.
CDataRecoveryHandler::GenerateAutosaveFileName Gera o nome para um ficheiro de autosave associado ao nome do ficheiro do documento fornecido.
CDataRecoveryHandler::GetAutosaveInterval Devolve o intervalo entre tentativas de autosave.
CDataRecoveryHandler::GetAutosavePath Devolve o caminho dos ficheiros auto-guardados.
CDataRecoveryHandler::GetDocumentListName Recupera o nome do documento a partir de um CDocument objeto.
CDataRecoveryHandler::GetNormalDocumentTitle Recupera o título normal do documento especificado.
CDataHandlerRecovery::GetRecoveredDocumentTitle Cria e devolve o título do documento recuperado.
CDataRecoveryHandler::GetRestartIdentifier Recupera o identificador único de reinício da aplicação.
CDataRecoveryHandler::GetSaveDocumentInfoOnIdle Indica se realiza CDataRecoveryHandler uma gravação automática no ciclo de inatividade atual.
CDataHandlerRecovery::GetShutdownPorRestartManager Indica se o gestor de reinício causou o encerramento da aplicação.
CDataRecoveryHandler::Inicializar Inicializa o CDataRecoveryHandler.
CDataRecoveryHandler::QueryRestoreAutosavedDocuments Exibe uma caixa de diálogo ao utilizador para cada documento que o CDataRecoveryHandler auto-guardasse. A caixa de diálogo determina se o utilizador quer restaurar o documento auto-salvo.
CDataRecoveryHandler::ReadOpenDocumentList Carrega a lista de documentos abertos a partir do registo.
CDataRecoveryHandler::RemoveDocumentInfo Remove o documento fornecido da lista de documentos abertos.
CDataRecoveryHandler::Reabrir Documentos Anteriores Abre os documentos anteriormente abertos.
CDataRecoveryHandler::RestoreAutosavedDocuments Restaura os documentos auto-salvos com base na entrada do utilizador.
CDataRecoveryHandler::SaveOpenDocumentList Guarda a lista atual de documentos abertos no registo do Windows.
CDataRecoveryHandler::SetAutosaveInterval Define o tempo entre ciclos de autosave em milissegundos.
CDataRecoveryHandler::SetAutosavePath Define o diretório onde os ficheiros auto-salvos são armazenados.
CDataRecoveryHandler::SetRestartIdentifier Define o identificador único de reinício para esta instância do CDataRecoveryHandler.
CDataRecoveryHandler::SetSaveDocumentInfoOnIdle Define se guarda CDataRecoveryHandler a informação do documento aberto no registo do Windows durante o ciclo de inatividade atual.
CDataHandlerRecovery::SetShutdownPorRestartManager Define se a saída anterior da aplicação foi causada pelo gestor de reinícios.
CDataRecoveryHandler::UpdateDocumentInfo Atualiza a informação de um documento porque o utilizador o guardou.

Membros de Dados

Nome Description
m_bRestoringPreviousOpenDocs Indica se o handler de recuperação de dados reabre documentos previamente abertos.
m_bSaveDocumentInfoOnIdle Indica se o handler de recuperação de dados salva automaticamente documentos no próximo ciclo de inatividade.
m_bShutdownByRestartManager Indica se o gestor de reinício faz a aplicação sair.
m_dwRestartManagerSupportFlags Indicadores que indicam que suporte o gestor de reinício fornece à aplicação.
m_lstAutosavesToDelete Uma lista de ficheiros auto-salvos que não foram eliminados quando os documentos originais foram encerrados. Quando a aplicação sai, o gestor de reinício tenta novamente apagar os ficheiros.
m_mapDocNameToAutosaveName Um mapa dos nomes dos documentos para os nomes dos ficheiros auto-salvos.
m_mapDocNameToDocumentPtr Um mapa dos nomes dos documentos para os ponteiros CDocument .
m_mapDocNameToRestoreBool Um mapa dos nomes dos documentos para um parâmetro booleano que indica se deve restaurar o documento auto-salvo.
m_mapDocumentPtrToDocName Um mapa dos CDocument ponteiros para os nomes dos documentos.
m_mapDocumentPtrToDocTitle Um mapa dos CDocument ponteiros para os títulos dos documentos. Estes títulos são usados para guardar ficheiros.
m_nAutosaveInterval Tempo em milissegundos entre autosaves.
m_nTimerID O identificador do temporizador de gravação automática.
m_strAutosavePath O local onde os documentos auto-salvados são armazenados.
m_strRestartIdentifier A representação da string de um GUID para o gestor de reinícios.

Observações

O gestor de reinício usa a CDataRecoveryHandler classe para acompanhar todos os documentos abertos e para os guardar automaticamente conforme necessário. Para ativar o autosave, use o método CDataRecoveryHandler::SetSaveDocumentInfoOnIdle . Este método orienta o CDataRecoveryHandler a realizar um autosave no próximo ciclo de inatividade. O gestor de reinício indica SetSaveDocumentInfoOnIdle quando deve CDataRecoveryHandler fazer um autosave.

Todos os métodos da CDataRecoveryHandler aula são virtuais. Sobrepor os métodos desta classe para criar o seu próprio gestor personalizado de recuperação de dados. A menos que crie o seu próprio gestor de recuperação de dados ou gestor de reinicios, não instancie um CDataRecoveryHandler. A Classe CWinApp cria um CDataRecoveryHandler objeto conforme necessário.

Antes de poder usar um CDataRecoveryHandler objeto, deve chamar CDataRecoveryHandler::Initialize.

Como a CDataRecoveryHandler classe está intimamente ligada ao gestor de reinícios, CDataRecoveryHandler depende do parâmetro m_dwRestartManagerSupportFlagsglobal . Este parâmetro determina que permissões tem o gestor de reinício e como interage com a sua aplicação. Para incorporar o gestor de reinício numa aplicação existente, tem de atribuir m_dwRestartManagerSupportFlags o valor apropriado ao construtor da sua aplicação principal. Para mais informações sobre como usar o gestor de reinícios, veja Como: Adicionar Suporte ao Gestor de Reinícios.

Requerimentos

Cabeçalho: afxdatarecovery.h

CDataRecoveryHandler::AutosaveAllDocumentInfo

Guarda automaticamente cada ficheiro registado na CDataRecoveryHandler turma.

virtual BOOL AutosaveAllDocumentInfo();

Valor de retorno

VERDADE se guardaram CDataRecoveryHandler todos os documentos; FALSO se algum documento não foi guardado.

Observações

Este método retorna TRUE se não houver documentos que tenham de ser guardados. Também devolve TRUE sem guardar quaisquer documentos se recuperar o CWinApp ou CDocManager para a aplicação gerar um erro.

Para usar este método, AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART ou AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL deve ser definido em m_dwRestartManagerSupportFlags. Para mais informações, veja Como: Adicionar Suporte ao Gestor de Reinicio.

CDataRecoveryHandler::AutosaveDocumentInfo

Guarda automaticamente o documento especificado.

virtual BOOL AutosaveDocumentInfo(
    CDocument* pDocument,
    BOOL bResetModifiedFlag = TRUE);

Parâmetros

pDocument
[dentro] Uma dica para o CDocument modo de salvar.

bResetModifiedFlag
[dentro] TRUE indica que considera CDataRecoveryHandlerpDocument como sendo modificado; FALSE indica que o framework considera pDocument como não modificado. Consulte a secção de Observações para mais informações sobre o efeito desta bandeira.

Valor de retorno

TRUE se os flags apropriados estiverem definidos e o pDocument for um objeto válido CDocument .

Observações

Cada CDocument objeto tem uma bandeira que indica se mudou desde o último save. Use CDocument::IsModified para determinar o estado desta bandeira. Se a CDocument não mudou desde o último save, AutosaveDocumentInfo apaga quaisquer ficheiros auto-salvos desse documento. Se um documento tiver sido alterado desde a última gravação, o seu encerramento pede ao utilizador que o guarde antes de fechar.

Observação

Usar bResetModifiedFlag para alterar o estado do documento para não modificado pode fazer com que o utilizador perca dados não guardados. Se o framework considerar um documento como não modificado, fechá-lo não pede ao utilizador para guardar.

Este método lança uma exceção com a macro ASSERT se o pDocument não for um objeto válido CDocument .

Para usar este método, AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART ou AFX_RESTARTMANAGER_AUTOSAVE_AT_INTERVAL devem ser definidos em m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::CDataRecoveryHandler

Constrói um CDataRecoveryHandler objeto.

CDataRecoveryHandler(
    DWORD dwRestartManagerSupportFlags,
    int nAutosaveInterval);

Parâmetros

dwRestartGerênciaBandeirasSuporteBandeiras
[dentro] Indica quais as opções do gestor de reinício que são suportadas.

nAutosaveInterval
[dentro] O tempo entre os autosaves. Este parâmetro está em milissegundos.

Observações

A framework MFC cria automaticamente um CDataRecoveryHandler objeto para a sua aplicação quando usa o assistente de Novo Projeto . A menos que estejas a personalizar o comportamento de recuperação de dados ou o gestor de reinícios, não deves criar um CDataRecoveryHandler objeto.

CDataRecoveryHandler::CreateDocumentInfo

Adiciona um documento à lista de documentos em aberto.

virtual BOOL CreateDocumentInfo(CDocument* pDocument);

Parâmetros

pDocument
[dentro] Um indicador para um CDocument. Este método cria a informação do documento para este CDocument.

Valor de retorno

A implementação padrão devolve TRUE.

Observações

Este método verifica se o pDocument já está na lista de documentos antes de adicionar o documento. Se o pDocument já estiver na lista, este método elimina o ficheiro auto-salvo associado ao pDocument.

Para usar este método, AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART ou AFX_RESTARTMANAGER_AUTOSAVE_AT_INTERVAL devem ser definidos em m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::D eleteAllAutosavedFilesFiles

Apaga todos os ficheiros auto-salvos atuais.

virtual BOOL DeleteAllAutosavedFiles();

Valor de retorno

A implementação padrão devolve sempre TRUE.

CDataRecoveryHandler::D eleteAutosavedFile

Apaga o ficheiro auto-salvo especificado.

virtual BOOL DeleteAutosavedFile(const CString& strAutosavedFile);

Parâmetros

strAutosavedFile
[dentro] Uma cadeia que contém o nome do ficheiro auto-guardado.

Valor de retorno

A implementação padrão devolve sempre TRUE.

Observações

Se este método não conseguir apagar o ficheiro autosave, ele guarda o nome do ficheiro numa lista. O destruidor tenta CDataRecoveryHandler apagar cada ficheiro auto-salvo especificado nessa lista.

CDataRecoveryHandler::GenerateAutosaveFileName

Gera o nome para um ficheiro de autosave associado ao nome do ficheiro do documento fornecido.

virtual CString GenerateAutosaveFileName(const CString& strDocumentName) const;

Parâmetros

strDocumentName
[dentro] Uma cadeia que contém o nome do documento. GenerateAutosaveFileName utiliza este nome de documento para gerar o nome correspondente de ficheiro de autosave.

Valor de retorno

O nome do ficheiro autosave gerado a partir do strDocumentName.

Observações

Cada nome de documento tem um mapeamento um-para-um com um nome de ficheiro de gravação automática.

CDataRecoveryHandler::GetAutosaveInterval

Devolve o intervalo entre tentativas de autosave.

virtual int GetAutosaveInterval() const;

Valor de retorno

O número de milissegundos entre tentativas de autosave.

CDataRecoveryHandler::GetAutosavePath

Devolve o caminho dos ficheiros auto-guardados.

virtual CString GetAutosavePath() const;

Valor de retorno

O local onde os documentos auto-salvados são armazenados.

CDataRecoveryHandler::GetDocumentListName

Recupera o nome do documento a partir de um CDocument objeto.

virtual CString GetDocumentListName(CDocument* pDocument) const;

Parâmetros

pDocument
[dentro] Um indicador para um CDocument. GetDocumentListName recupera o nome do documento a partir deste CDocument.

Valor de retorno

O nome do documento vem do pDocument.

Observações

Usa CDataRecoveryHandler o nome do documento como chave em m_mapDocNameToAutosaveName, m_mapDocNameToDocumentPtr e m_mapDocNameToRestoreBool. Estes parâmetros permitem CDataRecoveryHandler monitorizar CDocument objetos, o nome do ficheiro de autosave e as definições de autosave.

CDataRecoveryHandler::GetNormalDocumentTitle

Recupera o título normal do documento especificado.

virtual CString GetNormalDocumentTitle(CDocument* pDocument);

Parâmetros

pDocument
[dentro] Um indicador para um CDocument.

Valor de retorno

O título normal do documento especificado.

Observações

O título normal de um documento é geralmente o nome do ficheiro do documento sem o caminho. Este é o título no campo de nome do ficheiro da caixa de diálogo Guardar Como .

CDataHandlerRecovery::GetRecoveredDocumentTitle

Cria e devolve o título do documento recuperado.

virtual CString GetRecoveredDocumentTitle(const CString& strDocumentTitle) const;

Parâmetros

strDocumentTitle
[dentro] O título normal do documento.

Valor de retorno

O título do documento recuperado.

Observações

Por defeito, o título recuperado de um documento é o título normal com [recuperado] anexado. O título recuperado é exibido ao utilizador quando o CDataRecoveryHandler utilizador é solicitado a restaurar documentos auto-salvos.

CDataRecoveryHandler::GetRestartIdentifier

Recupera o identificador único de reinício da aplicação.

virtual CString GetRestartIdentifier() const;

Valor de retorno

O identificador único de reinício.

Observações

O identificador de reinício é único para cada execução da aplicação.

Armazena CDataRecoveryHandler informações no registo sobre os documentos atualmente abertos. Quando o gestor de reinício sai de uma aplicação e a reinicia, fornece o identificador de reinício ao CDataRecoveryHandler. Utiliza CDataRecoveryHandler o identificador de reinício para recuperar a lista de documentos previamente abertos. Isto permite que tentem CDataRecoveryHandler encontrar e restaurar ficheiros auto-salvos.

CDataRecoveryHandler::GetSaveDocumentInfoOnIdle

Indica se realiza CDataRecoveryHandler uma gravação automática no ciclo de inatividade atual.

virtual BOOL GetSaveDocumentInfoOnIdle() const;

Valor de retorno

TRUE indica a CDataRecoveryHandler gravação automática no ciclo de repouso atual; FALSE indica que não.

CDataHandlerRecovery::GetShutdownPorRestartManager

Indica se o gestor de reinício causou o encerramento da aplicação.

virtual BOOL GetShutdownByRestartManager() const;

Valor de retorno

TRUE indica que o gestor de reinício causou o encerramento da aplicação; FALSE indica que não.

CDataRecoveryHandler::Inicializar

Inicializa o CDataRecoveryHandler.

virtual BOOL Initialize();

Valor de retorno

TRUE se a inicialização for bem-sucedida; caso contrário, FALSO.

Observações

O processo de inicialização carrega o caminho para armazenar ficheiros de autosave a partir do registo. Se o Initialize método não conseguir encontrar este diretório ou se o caminho for NULL, Initialize falha e retorna FALSE.

Use CDataRecoveryHandler::SetAutosavePath para alterar o caminho de autosave após a sua aplicação inicializar o CDataRecoveryHandler.

O Initialize método também inicia um temporizador para monitorizar quando ocorre o próximo autosave. Use CDataRecoveryHandler::SetAutosaveInterval para alterar o intervalo de autosave após a sua aplicação inicializar o CDataRecoveryHandler.

CDataRecoveryHandler::QueryRestoreAutosavedDocuments

Exibe uma caixa de diálogo ao utilizador para cada documento que o CDataRecoveryHandler auto-guardasse. A caixa de diálogo determina se o utilizador quer restaurar o documento auto-salvo.

virtual void QueryRestoreAutosavedDocuments();

Observações

Se a sua aplicação for Unicode, este método apresenta um CTaskDialog ao utilizador. Caso contrário, a framework utiliza o AfxMessageBox para consultar o utilizador.

Depois QueryRestoreAutosavedDocuments de recolher todas as respostas do utilizador, armazena a informação na variável membro m_mapDocNameToRestoreBool. Este método não restaura os documentos guardados automaticamente.

CDataRecoveryHandler::ReadOpenDocumentList

Carrega a lista de documentos abertos a partir do registo.

virtual BOOL ReadOpenDocumentList();

Valor de retorno

TRUE indica que ReadOpenDocumentList carregou a informação de pelo menos um documento do registo; FALSE indica que nenhuma informação de documento foi carregada.

Observações

Esta função carrega a informação do documento aberto do registo e armazena-a na variável membro m_mapDocNameToAutosaveName.

Depois de ReadOpenDocumentList carregar todos os dados, apaga a informação do documento do registo.

CDataRecoveryHandler::RemoveDocumentInfo

Remove o documento fornecido da lista de documentos abertos.

virtual BOOL RemoveDocumentInfo(CDocument* pDocument);

Parâmetros

pDocument
[dentro] Um apontador para o documento a remover.

Valor de retorno

TRUE se o pDocument foi removido da lista; FALSE se ocorrer um erro.

Observações

Quando o utilizador fecha um documento, a estrutura utiliza este método para o remover da lista de documentos abertos.

Se RemoveDocumentInfo não encontrar pDocument na lista de documentos abertos, não faz nada e devolve TRUE.

Para usar este método, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES deve ser definido em m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::Reabrir Documentos Anteriores

Abre os documentos anteriormente abertos.

virtual BOOL ReopenPreviousDocuments();

Valor de retorno

TRUE se pelo menos um documento foi aberto; caso contrário, FALSO.

Observações

Este método abre a gravação mais recente dos documentos anteriormente abertos. Se um documento não foi guardado ou guardado automaticamente, ReopenPreviousDocuments abre-se um documento em branco com base no modelo desse tipo de ficheiro.

Para usar este método, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES deve ser definido em m_dwRestartManagerSupportFlags. Se este parâmetro não estiver definido, ReopenPreviousDocuments não faz nada e retorna FALSE.

Se não houver documentos armazenados na lista de documentos previamente abertos, ReopenPreviousDocuments não faz nada e retorna FALSE.

CDataRecoveryHandler::RestoreAutosavedDocuments

Restaura os documentos auto-salvos com base na entrada do utilizador.

virtual BOOL RestoreAutosavedDocuments();

Valor de retorno

VERDADE se este método restaurar os documentos com sucesso.

Observações

Este método chama CDataRecoveryHandler::QueryRestoreAutosavedDocuments para determinar quais os documentos que o utilizador quer restaurar. Se um utilizador decidir não restaurar um documento autoguardado, RestoreAutosavedDocuments apaga o ficheiro de autosave. Caso contrário, RestoreAutosavedDocuments substitui o documento aberto pela versão auto-guardada.

Para usar este método, ou AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES ou AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES devem ser definidos em m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::SaveOpenDocumentList

Guarda a lista atual de documentos abertos no registo do Windows.

virtual BOOL SaveOpenDocumentList();

Valor de retorno

VERDADE se não houver documentos abertos para guardar ou se foram guardados com sucesso. FALSE se houver documentos para guardar no registo, mas não foram guardados porque ocorreu um erro.

Observações

O gestor de reinício liga SaveOpenDocumentList quando a aplicação sai inesperadamente ou quando sai para uma atualização. Quando a aplicação reinicia, utiliza CDataRecoveryHandler::ReadOpenDocumentList para recuperar a lista de documentos abertos.

Este método guarda apenas a lista de documentos abertos. O método CDataRecoveryHandler::AutosaveDocumentInfo é responsável por guardar os próprios documentos.

CDataRecoveryHandler::SetAutosaveInterval

Define o tempo entre ciclos de autosave em milissegundos.

Virtual void SetAutosaveInterval(int nAutosaveInterval);

Parâmetros

nAutosaveInterval
[dentro] O novo intervalo de gravação automática em milissegundos.

CDataRecoveryHandler::SetAutosavePath

Define o diretório onde os ficheiros auto-salvos são armazenados.

virtual void SetAutosavePath(const CString& strAutosavePath);

Parâmetros

strAutosavePath
[dentro] O caminho onde os ficheiros de autosave são armazenados.

Observações

Mudar o diretório de autosave não move os ficheiros autosaves atualmente.

CDataRecoveryHandler::SetRestartIdentifier

Define o identificador único de reinício para esta instância do CDataRecoveryHandler.

virtual void SetRestartIdentifier(const CString& strRestartIdentifier);

Parâmetros

strRestartIdentifier
[dentro] O identificador único do gestor de reinícios.

Observações

O gestor de reinício regista informações sobre os documentos abertos no registo. Esta informação é armazenada com o identificador único de reinício como chave. Como o identificador de reinício é único para cada instância de uma aplicação, múltiplas instâncias de uma aplicação podem sair inesperadamente e o gestor de reinício pode recuperar cada uma delas.

CDataRecoveryHandler::SetSaveDocumentInfoOnIdle

Define se guarda CDataRecoveryHandler a informação do documento aberto no registo do Windows durante o ciclo de inatividade atual.

virtual void SetSaveDocumentInfoOnIdle(BOOL bSaveOnIdle);

Parâmetros

bSaveOnIdle
[dentro] TRUE para guardar informação do documento durante o ciclo de inatividade atual; FALSE para não fazer um save.

CDataHandlerRecovery::SetShutdownPorRestartManager

Define se a saída anterior da aplicação foi causada pelo gestor de reinícios.

virtual void SetShutdownByRestartManager(BOOL bShutdownByRestartManager);

Parâmetros

bShutdownPorReiniciar Gestor
[dentro] TRUE para indicar que o gestor de reinício fez a aplicação sair; FALSE para indicar que a candidatura foi encerrada por outro motivo.

Observações

A estrutura comporta-se de forma diferente consoante se a saída anterior foi inesperada ou se foi iniciada pelo gestor de reinícios.

CDataRecoveryHandler::UpdateDocumentInfo

Atualiza a informação de um documento porque o utilizador o guardou.

virtual BOOL UpdateDocumentInfo(CDocument* pDocument);

Parâmetros

pDocument
[dentro] Um apontador para o documento guardado.

Valor de retorno

TRUE se este método apagou o documento auto-guardado e atualizou a informação do documento; FALSE se ocorrer um erro.

Observações

Quando um utilizador guarda um documento, a aplicação remove o ficheiro auto-salvo porque já não é necessário. UpdateDocumentInfo apaga o ficheiro guardado automaticamente ao chamar CDataRecoveryHandler::RemoveDocumentInfo. UpdateDocumentInfo depois adiciona a informação do pDocument à lista de documentos atualmente abertos porque RemoveDocumentInfo apaga essa informação, mas o documento guardado continua aberto.

Para usar este método, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES deve ser definido em m_dwRestartManagerSupportFlags.

Consulte também

Classes
Gráfico de Hierarquia
CObject Classe
Como adicionar suporte ao Restart Manager