Compartir a través de


Clase CDataRecoveryHandler

La CDataRecoveryHandler guarda documentos automáticamente y los restaura si una aplicación se cierra de manera inesperada.

Sintaxis

class CDataRecoveryHandler : public CObject

Miembros

Constructores

Nombre Descripción
CDataRecoveryHandler::CDataRecoveryHandler Construye un objeto CDataRecoveryHandler.

Métodos

Nombre Descripción
CDataRecoveryHandler::AutosaveAllDocumentInfo Guarda automáticamente cada archivo registrado con la clase CDataRecoveryHandler.
CDataRecoveryHandler::AutosaveDocumentInfo Guarda automáticamente el documento especificado.
CDataRecoveryHandler::CreateDocumentInfo Agrega un documento a la lista de documentos abiertos.
CDataRecoveryHandler::DeleteAllAutosavedFiles Elimina todos los archivos actuales de autoguardado.
CDataRecoveryHandler::DeleteAutosavedFile Elimina el archivo de autoguardado especificado.
CDataRecoveryHandler::GenerateAutosaveFileName Genera el nombre de un archivo autoguardado asociado al nombre de archivo de documento proporcionado.
CDataRecoveryHandler::GetAutosaveInterval Devuelve el intervalo entre los intentos de autoguardado.
CDataRecoveryHandler::GetAutosavePath Devuelve la ruta de acceso de los archivos guardados automáticamente.
CDataRecoveryHandler::GetDocumentListName Recupera el nombre del documento de un objeto CDocument.
CDataRecoveryHandler::GetNormalDocumentTitle Recupera el título normal del documento especificado.
CDataRecoveryHandler::GetRecoveredDocumentTitle Crea y devuelve el título del documento recuperado.
CDataRecoveryHandler::GetRestartIdentifier Recupera el identificador de reinicio único de la aplicación.
CDataRecoveryHandler::GetSaveDocumentInfoOnIdle Indica si CDataRecoveryHandler realiza el autoguardado en el bucle inactivo actual.
CDataRecoveryHandler::GetShutdownByRestartManager Indica si el administrador de reinicio ocasionó la salida de la aplicación.
CDataRecoveryHandler::Initialize Inicializa el CDataRecoveryHandler.
CDataRecoveryHandler::QueryRestoreAutosavedDocuments Muestra un cuadro de diálogo al usuario por cada documento guardado por CDataRecoveryHandler automáticamente. El cuadro de diálogo determina si el usuario quiere restaurar el documento guardado automáticamente.
CDataRecoveryHandler::ReadOpenDocumentList Carga la lista de documentos abiertos desde el registro.
CDataRecoveryHandler::RemoveDocumentInfo Quita el documento proporcionado de la lista de documentos abiertos.
CDataRecoveryHandler::ReopenPreviousDocuments Abre los documentos abiertos anteriormente.
CDataRecoveryHandler::RestoreAutosavedDocuments Restaura los documentos guardados automáticamente en función de la entrada de usuario.
CDataRecoveryHandler::SaveOpenDocumentList Guarda la lista actual de documentos abiertos en el registro de Windows.
CDataRecoveryHandler::SetAutosaveInterval Establece el tiempo entre ciclos de autoguardado en milisegundos.
CDataRecoveryHandler::SetAutosavePath Establece el directorio donde se almacenan los archivos guardados automáticamente.
CDataRecoveryHandler::SetRestartIdentifier Establece el identificador de reinicio único para esta instancia de CDataRecoveryHandler.
CDataRecoveryHandler::SetSaveDocumentInfoOnIdle Establece si CDataRecoveryHandler guarda la información del documento abierto en el Registro de Windows durante el ciclo de inactividad actual.
CDataRecoveryHandler::SetShutdownByRestartManager Establece si la salida anterior de la aplicación se debió al administrador de reinicio.
CDataRecoveryHandler::UpdateDocumentInfo Actualiza la información de un documento porque el usuario lo guardó.

Miembros de datos

Nombre Descripción
m_bRestoringPreviousOpenDocs Indica si el controlador de recuperación de datos vuelve a abrir documentos previamente abiertos.
m_bSaveDocumentInfoOnIdle Indica si el controlador de recuperación de datos guarda automáticamente los documentos en el siguiente bucle inactivo.
m_bShutdownByRestartManager Indica si el administrador de reinicio ocasiona la salida de la aplicación.
m_dwRestartManagerSupportFlags Marcas que indican qué soporte proporciona el administrador de reinicio a la aplicación.
m_lstAutosavesToDelete Una lista de archivos guardados automáticamente que no se eliminaron cuando se cerraron los documentos originales. Cuando se sale de la aplicación, el administrador de reinicio reintenta la eliminación de los archivos.
m_mapDocNameToAutosaveName Una asignación de los nombres de documento a los nombres de archivo de autoguardado.
m_mapDocNameToDocumentPtr Una asignación de los nombres de documento a los punteros de CDocument.
m_mapDocNameToRestoreBool Una asignación de los nombres de documento a un parámetro booleano que indica si se restaura o no el documento guardado automáticamente.
m_mapDocumentPtrToDocName Una asignación de los punteros CDocument a los nombres de documento.
m_mapDocumentPtrToDocTitle Una asignación de los punteros CDocument a los títulos de documento. Estos títulos se usan para guardar archivos.
m_nAutosaveInterval Tiempo, en milisegundos, entre autoguardados.
m_nTimerID El identificador del temporizador de autoguardado.
m_strAutosavePath La ubicación donde se almacenan los documentos guardados automáticamente.
m_strRestartIdentifier La representación de cadena de una GUID para el administrador de reinicio.

Comentarios

El administrador de reinicio usa la clase CDataRecoveryHandler para realizar un seguimiento de todos los documentos abiertos y para guardarlos automáticamente según sea necesario. Para habilitar el autoguardado, use el método CDataRecoveryHandler::SetSaveDocumentInfoOnIdle . Este método dirige CDataRecoveryHandler para realizar un autoguardado en el siguiente bucle inactivo. El administrador de reinicio llama a SetSaveDocumentInfoOnIdle cuando CDataRecoveryHandler debe realizar un autoguardado.

Todos los métodos de la clase CDataRecoveryHandler son virtuales. Reemplace los métodos de esta clase para crear su propio controlador de recuperación de datos personalizado. A menos que cree su propio controlador de recuperación de datos o administrador de reinicio, no cree una instancia de CDataRecoveryHandler. La clase CWinApp crea un objeto CDataRecoveryHandler conforme sea necesario.

Antes de poder usar un objeto CDataRecoveryHandler, debe llamar a CDataRecoveryHandler::Initialize.

Dado que la clase CDataRecoveryHandler está estrechamente conectada al administrador de reinicio, CDataRecoveryHandler depende del parámetro m_dwRestartManagerSupportFlagsglobal. Este parámetro determina qué permisos tiene el administrador de reinicio y cómo interactúa con la aplicación. Para incorporar el administrador de reinicio en una aplicación existente, debe asignar a m_dwRestartManagerSupportFlags el valor adecuado en el constructor de la aplicación principal. Para más información sobre cómo usar el administrador de reinicio, consulte Cómo agregar compatibilidad con el Administrador de reinicio.

Requisitos

Encabezado: afxdatarecovery.h

CDataRecoveryHandler::AutosaveAllDocumentInfo

Guarda automáticamente cada archivo registrado con la clase CDataRecoveryHandler.

virtual BOOL AutosaveAllDocumentInfo();

Valor devuelto

TRUE si CDataRecoveryHandler guardó todos los documentos; FALSE si algún documento no se guardó.

Comentarios

Este método devuelve TRUE si no hay ningún documento que se deba guardar. También devuelve TRUE sin guardar ningún documento si recuperar CWinApp o CDocManager para la aplicación genera un error.

Para usar este método, debe establecerse AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART o AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL en m_dwRestartManagerSupportFlags. Para obtener más información, consulte Cómo agregar compatibilidad con el Administrador de reinicio.

CDataRecoveryHandler::AutosaveDocumentInfo

Guarda automáticamente el documento especificado.

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

Parámetros

pDocument
[in] Un puntero al CDocument por guardar.

bResetModifiedFlag
[in] TRUE indica que CDataRecoveryHandler considera que pDocument está modificado; FALSE indica que el marco considera que pDocument no está modificado. Consulte la sección Comentarios para obtener más información sobre el efecto de esta marca.

Valor devuelto

TRUE si se establecen las marcas adecuadas y pDocument es un objeto CDocument válido.

Comentarios

Cada objeto CDocument tiene una marca que indica si ha cambiado desde el último guardado. Use CDocument::IsModified para determinar el estado de esta marca. Si CDocument no ha cambiado desde el último guardado, AutosaveDocumentInfo elimina los archivos guardados automáticamente para ese documento. Si un documento ha cambiado desde el último guardado, al cerrar se pide al usuario que guarde el documento antes de cerrarlo.

Nota:

El uso de bResetModifiedFlag para cambiar el estado del documento a no modificado puede ocasionar que el usuario pierda datos no guardados. Si el marco considera un documento como no modificado, al cerrarlo no se solicita al usuario que guarde.

Este método produce una excepción con la macro ASSERT si pDocument no es un objeto CDocument válido.

Para usar este método, debe establecerse AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART o AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL en m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::CDataRecoveryHandler

Construye un objeto CDataRecoveryHandler.

CDataRecoveryHandler(
    DWORD dwRestartManagerSupportFlags,
    int nAutosaveInterval);

Parámetros

dwRestartManagerSupportFlags
[in] Indica qué opciones del administrador de reinicio se admiten.

nAutosaveInterval
[in] El tiempo entre autoguardados. Este parámetro está en milisegundos.

Comentarios

El marco MFC crea automáticamente un objeto CDataRecoveryHandler para la aplicación cuando se usa el Asistente para nuevo proyecto. A menos que esté personalizando el comportamiento de recuperación de datos o el administrador de reinicio, no debe crear un objeto CDataRecoveryHandler.

CDataRecoveryHandler::CreateDocumentInfo

Agrega un documento a la lista de documentos abiertos.

virtual BOOL CreateDocumentInfo(CDocument* pDocument);

Parámetros

pDocument
[in] Un puntero a un CDocument. Este método crea la información del documento para este CDocument.

Valor devuelto

La implementación predeterminada devuelve TRUE.

Comentarios

Este método comprueba si pDocument ya está en la lista de documentos antes de agregar el documento. Si pDocument ya está en la lista, este método elimina el archivo guardado automáticamente asociado a pDocument.

Para usar este método, debe establecerse AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART o AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL en m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::DeleteAllAutosavedFiles

Elimina todos los archivos actuales de autoguardado.

virtual BOOL DeleteAllAutosavedFiles();

Valor devuelto

La implementación predeterminada siempre devuelve TRUE.

CDataRecoveryHandler::DeleteAutosavedFile

Elimina el archivo de autoguardado especificado.

virtual BOOL DeleteAutosavedFile(const CString& strAutosavedFile);

Parámetros

strAutosavedFile
[in] Una cadena que contiene el nombre de archivo guardado automáticamente.

Valor devuelto

La implementación predeterminada siempre devuelve TRUE.

Comentarios

Si este método no puede eliminar el archivo guardado automáticamente, guarda el nombre del archivo en una lista. El destructor de CDataRecoveryHandler intenta eliminar cada archivo guardado automáticamente especificado en esa lista.

CDataRecoveryHandler::GenerateAutosaveFileName

Genera el nombre de un archivo autoguardado asociado al nombre de archivo de documento proporcionado.

virtual CString GenerateAutosaveFileName(const CString& strDocumentName) const;

Parámetros

strDocumentName
[in] Una cadena que contiene el nombre de documento. GenerateAutosaveFileName usa este nombre de documento para generar un nombre de archivo de guardado automático correspondiente.

Valor devuelto

El nombre del archivo de guardado automático generado a partir de strDocumentName.

Comentarios

Cada nombre de documento tiene una asignación uno a uno con un nombre de archivo guardado automáticamente.

CDataRecoveryHandler::GetAutosaveInterval

Devuelve el intervalo entre los intentos de autoguardado.

virtual int GetAutosaveInterval() const;

Valor devuelto

El número de milisegundos entre intentos de guardado automático.

CDataRecoveryHandler::GetAutosavePath

Devuelve la ruta de acceso de los archivos guardados automáticamente.

virtual CString GetAutosavePath() const;

Valor devuelto

La ubicación donde se almacenan los documentos guardados automáticamente.

CDataRecoveryHandler::GetDocumentListName

Recupera el nombre del documento de un objeto CDocument.

virtual CString GetDocumentListName(CDocument* pDocument) const;

Parámetros

pDocument
[in] Un puntero a un CDocument. GetDocumentListName recupera el nombre del documento de este CDocument.

Valor devuelto

El nombre del documento de pDocument.

Comentarios

CDataRecoveryHandler usa el nombre del documento como clave en m_mapDocNameToAutosaveName, m_mapDocNameToDocumentPtr y m_mapDocNameToRestoreBool. Estos parámetros permiten a CDataRecoveryHandler supervisar objetos CDocument, el nombre del archivo de guardado automático y la configuración de guardado automático.

CDataRecoveryHandler::GetNormalDocumentTitle

Recupera el título normal del documento especificado.

virtual CString GetNormalDocumentTitle(CDocument* pDocument);

Parámetros

pDocument
[in] Un puntero a un CDocument.

Valor devuelto

El título normal del documento especificado.

Comentarios

El título normal de un documento suele ser el nombre de archivo del documento sin la ruta de acceso. Este es el título del campo Nombre de archivo del cuadro de diálogo Guardar como.

CDataRecoveryHandler::GetRecoveredDocumentTitle

Crea y devuelve el título del documento recuperado.

virtual CString GetRecoveredDocumentTitle(const CString& strDocumentTitle) const;

Parámetros

strDocumentTitle
[in] El título normal del documento.

Valor devuelto

El título del documento recuperado.

Comentarios

De forma predeterminada, el título recuperado de un documento es el título normal con [recuperado] anexado a él. El título recuperado se muestra al usuario cuando CDataRecoveryHandler consulta al usuario para restaurar documentos guardados automáticamente.

CDataRecoveryHandler::GetRestartIdentifier

Recupera el identificador de reinicio único de la aplicación.

virtual CString GetRestartIdentifier() const;

Valor devuelto

El identificador de reinicio único.

Comentarios

El identificador de reinicio es único para cada ejecución de la aplicación.

CDataRecoveryHandler almacena información en el registro sobre los documentos abiertos actualmente. Cuando el administrador de reinicio sale de una aplicación y la reinicia, proporciona el identificador de reinicio a CDataRecoveryHandler. CDataRecoveryHandler usa el identificador de reinicio para recuperar la lista de documentos abiertos previamente. Esto permite que CDataRecoveryHandler intente buscar y restaurar archivos guardados automáticamente.

CDataRecoveryHandler::GetSaveDocumentInfoOnIdle

Indica si CDataRecoveryHandler realiza el autoguardado en el bucle inactivo actual.

virtual BOOL GetSaveDocumentInfoOnIdle() const;

Valor devuelto

TRUE indica que CDataRecoveryHandler guarda automáticamente el bucle inactivo actual; FALSE indica que no lo hace.

CDataRecoveryHandler::GetShutdownByRestartManager

Indica si el administrador de reinicio ocasionó la salida de la aplicación.

virtual BOOL GetShutdownByRestartManager() const;

Valor devuelto

TRUE indica que el administrador de reinicio ocasionó la salida de la aplicación; FALSE indica que no lo hizo.

CDataRecoveryHandler::Initialize

Inicializa el CDataRecoveryHandler.

virtual BOOL Initialize();

Valor devuelto

TRUE si la inicialización se realiza correctamente; en caso contrario, FALSE.

Comentarios

El proceso de inicialización carga la ruta de acceso para almacenar archivos guardados automáticamente desde el registro. Si el método Initialize no encuentra este directorio o si la ruta de acceso es NULL, Initialize produce un error y devuelve FALSE.

Use CDataRecoveryHandler::SetAutosavePath para cambiar la ruta de acceso de guardado automático después de que la aplicación inicialice CDataRecoveryHandler.

El método Initialize también inicia un temporizador para supervisar cuándo se produce el siguiente guardado automático. Use CDataRecoveryHandler::SetAutosaveInterval para cambiar el intervalo de autoguardado después de que la aplicación inicialice CDataRecoveryHandler.

CDataRecoveryHandler::QueryRestoreAutosavedDocuments

Muestra un cuadro de diálogo al usuario por cada documento guardado por CDataRecoveryHandler automáticamente. El cuadro de diálogo determina si el usuario quiere restaurar el documento guardado automáticamente.

virtual void QueryRestoreAutosavedDocuments();

Comentarios

Si su aplicación es Unicode, este método muestra un CTaskDialog al usuario. De lo contrario, el marco usa AfxMessageBox para consultar al usuario.

Después de que QueryRestoreAutosavedDocuments recopila todas las respuestas del usuario, almacena la información en la variable de miembro m_mapDocNameToRestoreBool. Este método no restaura los documentos guardados automáticamente.

CDataRecoveryHandler::ReadOpenDocumentList

Carga la lista de documentos abiertos desde el registro.

virtual BOOL ReadOpenDocumentList();

Valor devuelto

TRUE indica que ReadOpenDocumentList cargó la información de al menos un documento del Registro; FALSE indica que no se cargó ninguna información del documento.

Comentarios

Esta función carga la información del documento abierto del Registro y la almacena en la variable de miembro m_mapDocNameToAutosaveName.

Después de que ReadOpenDocumentList carga todos los datos, elimina la información del documento del Registro.

CDataRecoveryHandler::RemoveDocumentInfo

Quita el documento proporcionado de la lista de documentos abiertos.

virtual BOOL RemoveDocumentInfo(CDocument* pDocument);

Parámetros

pDocument
[in] Un puntero al documento por eliminar.

Valor devuelto

TRUE si pDocument se quitó de la lista; FALSE si se ha producido un error.

Comentarios

Cuando el usuario cierra un documento, el marco usa este método para quitarlo de la lista de documentos abiertos.

Si RemoveDocumentInfo no puede encontrar pDocument en la lista de documentos abiertos, no hace nada y devuelve TRUE.

Para usar este método, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES debe establecerse en m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::ReopenPreviousDocuments

Abre los documentos abiertos anteriormente.

virtual BOOL ReopenPreviousDocuments();

Valor devuelto

TRUE si se abrió al menos un documento; en caso contrario, FALSE.

Comentarios

Este método abre el guardado más reciente de los documentos abiertos anteriormente. Si un documento no se guardó o se guardó automáticamente, ReopenPreviousDocuments abre un documento en blanco basado en la plantilla de ese tipo de archivo.

Para usar este método, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES debe establecerse en m_dwRestartManagerSupportFlags. Si no se establece este parámetro, ReopenPreviousDocuments no hace nada y devuelve FALSE.

Si no hay ningún documento almacenado en la lista de documentos abiertos previamente, ReopenPreviousDocuments no hace nada y devuelve FALSE.

CDataRecoveryHandler::RestoreAutosavedDocuments

Restaura los documentos guardados automáticamente en función de la entrada de usuario.

virtual BOOL RestoreAutosavedDocuments();

Valor devuelto

TRUE si este método restaura correctamente los documentos.

Comentarios

Este método llama a CDataRecoveryHandler::QueryRestoreAutosavedDocuments para determinar qué documentos desea restaurar el usuario. Si un usuario decide no restaurar un documento guardado automáticamente, RestoreAutosavedDocuments elimina el archivo de autoguardado. De lo contrario, RestoreAutosavedDocuments reemplaza el documento abierto por la versión guardada automáticamente.

Para usar este método, debe establecerse AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES o AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES en m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::SaveOpenDocumentList

Guarda la lista actual de documentos abiertos en el registro de Windows.

virtual BOOL SaveOpenDocumentList();

Valor devuelto

TRUE si no hay documentos abiertos por guardar o si se guardaron correctamente. FALSE si hay documentos por guardar en el registro, pero no se guardaron porque se produjo un error.

Comentarios

El administrador de reinicio llama SaveOpenDocumentList cuando la salida de la aplicación ocurre inesperadamente o cuando se sale de ella para una actualización. Cuando se reinicia la aplicación, usa CDataRecoveryHandler::ReadOpenDocumentList para recuperar la lista de documentos abiertos.

Este método guarda solo la lista de documentos abiertos. El método CDataRecoveryHandler::AutosaveDocumentInfo es responsable de guardar los propios documentos.

CDataRecoveryHandler::SetAutosaveInterval

Establece el tiempo entre ciclos de autoguardado en milisegundos.

Virtual void SetAutosaveInterval(int nAutosaveInterval);

Parámetros

nAutosaveInterval
[in] El nuevo intervalo de autoguardado en milisegundos.

CDataRecoveryHandler::SetAutosavePath

Establece el directorio donde se almacenan los archivos guardados automáticamente.

virtual void SetAutosavePath(const CString& strAutosavePath);

Parámetros

strAutosavePath
[in] Ruta de acceso donde se almacenan los archivos de autoguardado.

Comentarios

El cambio del directorio de autoguardado no mueve los archivos actuales de autoguardado.

CDataRecoveryHandler::SetRestartIdentifier

Establece el identificador de reinicio único para esta instancia de CDataRecoveryHandler.

virtual void SetRestartIdentifier(const CString& strRestartIdentifier);

Parámetros

strRestartIdentifier
[in] Identificador único del administrador de reinicio.

Comentarios

El administrador de reinicio registra información sobre los documentos abiertos en el registro. Esta información se almacena con el identificador de reinicio único como clave. Dado que el identificador de reinicio es único para cada instancia de una aplicación, varias instancias de una aplicación pueden salir inesperadamente y el administrador de reinicio puede recuperar cada una de ellas.

CDataRecoveryHandler::SetSaveDocumentInfoOnIdle

Establece si CDataRecoveryHandler guarda la información del documento abierto en el Registro de Windows durante el ciclo de inactividad actual.

virtual void SetSaveDocumentInfoOnIdle(BOOL bSaveOnIdle);

Parámetros

bSaveOnIdle
[in] TRUE para guardar la información del documento durante el ciclo de inactividad actual; FALSE para no realizar una operación de guardado.

CDataRecoveryHandler::SetShutdownByRestartManager

Establece si la salida anterior de la aplicación se debió al administrador de reinicio.

virtual void SetShutdownByRestartManager(BOOL bShutdownByRestartManager);

Parámetros

bShutdownByRestartManager
[in] TRUE para indicar que el administrador de reinicio ocasionó la salida de la aplicación; FALSE para indicar que se salió de la aplicación por otro motivo.

Comentarios

El marco se comporta de forma diferente con base en si la salida anterior era inesperada, o si el administrador de reinicio la inició.

CDataRecoveryHandler::UpdateDocumentInfo

Actualiza la información de un documento porque el usuario lo guardó.

virtual BOOL UpdateDocumentInfo(CDocument* pDocument);

Parámetros

pDocument
[in] Puntero al documento guardado.

Valor devuelto

TRUE si este método eliminó el documento guardado automáticamente y actualizó la información del documento; FALSE si se ha producido un error.

Comentarios

Cuando un usuario guarda un documento, la aplicación quita el archivo guardado automáticamente porque ya no es necesario. UpdateDocumentInfo elimina el archivo guardado automáticamente llamando a CDataRecoveryHandler::RemoveDocumentInfo. UpdateDocumentInfo a continuación, agrega la información de pDocument a la lista de documentos abiertos actualmente porque RemoveDocumentInfo elimina esa información, pero el documento guardado sigue abierto.

Para usar este método, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES debe establecerse en m_dwRestartManagerSupportFlags.

Consulte también

Clases
Gráfico de jerarquías
CObject (clase)
Procedimiento para agregar compatibilidad con el Administrador de reinicio