Поделиться через


Класс CDataRecoveryHandler

Автосохранение CDataRecoveryHandler документов и восстанавливает их при неожиданном выходе приложения.

Синтаксис

class CDataRecoveryHandler : public CObject

Участники

Конструкторы

Имя Описание
CDataRecoveryHandler::CDataRecoveryHandler Формирует объект CDataRecoveryHandler.

Методы

Имя Описание
CDataRecoveryHandler::AutosaveAllDocumentInfo Автосохранение каждого файла, зарегистрированного CDataRecoveryHandler в классе.
CDataRecoveryHandler::AutosaveDocumentInfo Автосохранение указанного документа.
CDataRecoveryHandler::CreateDocumentInfo Добавляет документ в список открытых документов.
CDataRecoveryHandler::D eleteAllAutosavedFiles Удаляет все текущие автоматически сохраненные файлы.
CDataRecoveryHandler::D eleteAutosavedFile Удаляет указанный автоматический файл.
CDataRecoveryHandler::GenerateAutosaveFileName Создает имя файла автосохранений, связанного с указанным именем файла документа.
CDataRecoveryHandler::GetAutosaveInterval Возвращает интервал между попытками автосохранений.
CDataRecoveryHandler::GetAutosavePath Возвращает путь к файлам автосохранения.
CDataRecoveryHandler::GetDocumentListName Извлекает имя документа из CDocument объекта.
CDataRecoveryHandler::GetNormalDocumentTitle Извлекает нормальное название указанного документа.
CDataRecoveryHandler::GetRecoveredDocumentTitle Создает и возвращает заголовок для восстановленного документа.
CDataRecoveryHandler::GetRestartIdentifier Извлекает уникальный идентификатор перезапуска для приложения.
CDataRecoveryHandler::GetSaveDocumentInfoOnIdle Указывает, выполняется ли CDataRecoveryHandler автосохранение в текущем цикле простоя.
CDataRecoveryHandler::GetShutdownByRestartManager Указывает, приведет ли диспетчер перезапуска к выходу приложения.
CDataRecoveryHandler::Initialize Инициализирует объект CDataRecoveryHandler.
CDataRecoveryHandler::QueryRestoreAutosavedDocuments Отображает диалоговое окно для пользователя для каждого документа, который CDataRecoveryHandler автоматически сохранен. Диалоговое окно определяет, хочет ли пользователь восстановить автоматически сохраненный документ.
CDataRecoveryHandler::ReadOpenDocumentList Загружает открытый список документов из реестра.
CDataRecoveryHandler::RemoveDocumentInfo Удаляет предоставленный документ из открытого списка документов.
CDataRecoveryHandler::ReopenPreviousDocuments Открывает ранее открытые документы.
CDataRecoveryHandler::RestoreAutosavedDocuments Восстанавливает автосохраняемые документы на основе ввода пользователем.
CDataRecoveryHandler::SaveOpenDocumentList Сохраняет текущий список открытых документов в реестре Windows.
CDataRecoveryHandler::SetAutosaveInterval Задает время между циклами автосохранений в миллисекундах.
CDataRecoveryHandler::SetAutosavePath Задает каталог, в котором хранятся автоматически сохраненные файлы.
CDataRecoveryHandler::SetRestartIdentifier Задает уникальный идентификатор перезапуска для этого экземпляра CDataRecoveryHandler.
CDataRecoveryHandler::SetSaveDocumentInfoOnIdle Задает, сохраняет ли CDataRecoveryHandler сведения о открытом документе в реестре Windows во время текущего цикла простоя.
CDataRecoveryHandler::SetShutdownByRestartManager Задает, был ли предыдущий выход приложения вызван диспетчером перезапуска.
CDataRecoveryHandler::UpdateDocumentInfo Обновляет сведения для документа, так как пользователь сохранил его.

Элементы данных

Имя Описание
m_bRestoringPreviousOpenDocs Указывает, открывает ли обработчик восстановления данных ранее открытые документы.
m_bSaveDocumentInfoOnIdle Указывает, выполняется ли автоматическое сохранение документов обработчика восстановления данных в следующем цикле простоя.
m_bShutdownByRestartManager Указывает, приводит ли диспетчер перезапуска к выходу приложения.
m_dwRestartManagerSupportFlags Флаги, указывающие, какую поддержку предоставляет диспетчер перезапуска для приложения.
m_lstAutosavesToDelete Список автоматически сохраненных файлов, которые не были удалены при закрытии исходных документов. Когда приложение завершает работу, диспетчер перезапуска повторяет удаление файлов.
m_mapDocNameToAutosaveName Карта имен документов с именами автоматически сохраненных файлов.
m_mapDocNameToDocumentPtr Карта имен документов с указателями CDocument .
m_mapDocNameToRestoreBool Карта имен документов с логическим параметром, указывающим, следует ли восстановить автоматически сохраненный документ.
m_mapDocumentPtrToDocName Карта CDocument указателей на имена документов.
m_mapDocumentPtrToDocTitle CDocument Карта указателей на заголовки документа. Эти названия используются для сохранения файлов.
m_nAutosaveInterval Время в миллисекундах между автосохранением.
m_nTimerID Идентификатор таймера автосохранений.
m_strAutosavePath Расположение, в котором хранятся автоматически сохраненные документы.
m_strRestartIdentifier Строковое представление GUID для диспетчера перезапуска.

Замечания

Диспетчер перезапуска использует CDataRecoveryHandler класс, чтобы отслеживать все открытые документы и автоматически сохранять их при необходимости. Чтобы включить автосохранение, используйте метод CDataRecoveryHandler::SetSaveDocumentInfoOnIdle . Этот метод направляет CDataRecoveryHandler автосохранение на следующий цикл простоя. Диспетчер перезапуска вызывается SetSaveDocumentInfoOnIdle при CDataRecoveryHandler выполнении автосохранений.

Все методы CDataRecoveryHandler класса являются виртуальными. Переопределите методы в этом классе, чтобы создать собственный обработчик восстановления данных. Если вы не создадите собственный обработчик восстановления данных или диспетчер перезапуска, не создайте экземпляр CDataRecoveryHandler. Класс CWinApp создает CDataRecoveryHandler объект по мере необходимости.

Прежде чем использовать CDataRecoveryHandler объект, необходимо вызвать CDataRecoveryHandler::Initialize.

CDataRecoveryHandler Так как класс тесно подключен к диспетчеру перезапуска, CDataRecoveryHandler зависит от глобального параметраm_dwRestartManagerSupportFlags. Этот параметр определяет, какие разрешения имеет диспетчер перезапуска и как он взаимодействует с приложением. Чтобы включить диспетчер перезапуска в существующее приложение, необходимо назначить m_dwRestartManagerSupportFlags соответствующее значение в конструкторе основного приложения. Дополнительные сведения об использовании диспетчера перезапуска см. в разделе "Практическое руководство. Добавление поддержки диспетчера перезапуска".

Требования

Заголовок: afxdatarecovery.h

CDataRecoveryHandler::AutosaveAllDocumentInfo

Автосохранение каждого файла, зарегистрированного CDataRecoveryHandler в классе.

virtual BOOL AutosaveAllDocumentInfo();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если сохранены CDataRecoveryHandler все документы; ЗНАЧЕНИЕ FALSE, если какой-либо документ не был сохранен.

Замечания

Этот метод возвращает значение TRUE, если нет документов, которые должны быть сохранены. Он также возвращает значение TRUE, не сохраняя CWinApp документы при получении или CDocManager получении приложения ошибки.

Чтобы использовать этот метод, необходимо задать m_dwRestartManagerSupportFlagsAFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART или AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL. Дополнительные сведения см. в разделе "Практическое руководство. Добавление поддержки диспетчера перезапуска".

CDataRecoveryHandler::AutosaveDocumentInfo

Автосохранение указанного документа.

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

Параметры

pDocument
[in] Указатель на CDocument сохранение.

bResetModifiedFlag
[in] ЗНАЧЕНИЕ TRUE указывает, что следует CDataRecoveryHandler изменить pDocument ; FALSE указывает, что платформа считает pDocument не измененной. Дополнительные сведения о влиянии этого флага см. в разделе "Примечания".

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если заданы соответствующие флаги, и pDocument является допустимым CDocument объектом.

Замечания

Каждый CDocument объект имеет флаг, указывающий, изменился ли он с момента последнего сохранения. Используйте CDocument::IsModified , чтобы определить состояние этого флага. Если с CDocument момента последнего сохранения не было изменено, AutosaveDocumentInfo удалите все автоматически сохраненные файлы для этого документа. Если документ изменился с момента последнего сохранения, закрывая его, пользователь предложит сохранить документ перед закрытием.

Примечание.

Использование bResetModifiedFlag для изменения состояния документа на немодифицированное может привести к потере несохраненных данных пользователем. Если платформа считает документ не измененным, закрывая его, пользователь не предложит сохранить его.

Этот метод создает исключение с макросом ASSERT , если pDocument не является допустимым CDocument объектом.

Чтобы использовать этот метод, необходимо задать AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART или AFX_RESTARTMANAGER_AUTOSAVE_AT_INTERVAL в m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::CDataRecoveryHandler

Формирует объект CDataRecoveryHandler.

CDataRecoveryHandler(
    DWORD dwRestartManagerSupportFlags,
    int nAutosaveInterval);

Параметры

dwRestartManagerSupportFlags
[in] Указывает, какие параметры диспетчера перезапуска поддерживаются.

nAutosaveInterval
[in] Время между автосохранением. Этот параметр находится в миллисекундах.

Замечания

Платформа MFC автоматически создает CDataRecoveryHandler объект для приложения при использовании мастера создания проекта . Если вы не настраиваете поведение восстановления данных или диспетчер перезапуска, не следует создавать CDataRecoveryHandler объект.

CDataRecoveryHandler::CreateDocumentInfo

Добавляет документ в список открытых документов.

virtual BOOL CreateDocumentInfo(CDocument* pDocument);

Параметры

pDocument
[in] Указатель на CDocument. Этот метод создает сведения о документе для этого CDocument.

Возвращаемое значение

Реализация по умолчанию возвращает ЗНАЧЕНИЕ TRUE.

Замечания

Этот метод проверяет , уже ли pDocument находится в списке документов перед добавлением документа. Если pDocument уже находится в списке, этот метод удаляет автоматически сохраненный файл, связанный с pDocument.

Чтобы использовать этот метод, необходимо задать AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART или AFX_RESTARTMANAGER_AUTOSAVE_AT_INTERVAL в m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::D eleteAllAutosavedFiles

Удаляет все текущие автоматически сохраненные файлы.

virtual BOOL DeleteAllAutosavedFiles();

Возвращаемое значение

Реализация по умолчанию всегда возвращает ЗНАЧЕНИЕ TRUE.

CDataRecoveryHandler::D eleteAutosavedFile

Удаляет указанный автоматический файл.

virtual BOOL DeleteAutosavedFile(const CString& strAutosavedFile);

Параметры

strAutosavedFile
[in] Строка, содержащая имя файла автосохраняемого файла.

Возвращаемое значение

Реализация по умолчанию всегда возвращает ЗНАЧЕНИЕ TRUE.

Замечания

Если этот метод не может удалить автоматически сохраненный файл, он сохраняет имя файла в списке. Деструктор для CDataRecoveryHandler попытки удалить каждый автоматически сохраненный файл, указанный в этом списке.

CDataRecoveryHandler::GenerateAutosaveFileName

Создает имя файла автосохранений, связанного с указанным именем файла документа.

virtual CString GenerateAutosaveFileName(const CString& strDocumentName) const;

Параметры

strDocumentName
[in] Строка, содержащая имя документа. GenerateAutosaveFileName использует это имя документа для создания соответствующего имени файла автосохрана.

Возвращаемое значение

Имя файла автосохранения, созданное из strDocumentName.

Замечания

Каждое имя документа имеет сопоставление "один к одному" с именем файла автосохранение.

CDataRecoveryHandler::GetAutosaveInterval

Возвращает интервал между попытками автосохранений.

virtual int GetAutosaveInterval() const;

Возвращаемое значение

Количество миллисекунда между попытками автосохранения.

CDataRecoveryHandler::GetAutosavePath

Возвращает путь к файлам автосохранения.

virtual CString GetAutosavePath() const;

Возвращаемое значение

Расположение, в котором хранятся автоматически сохраненные документы.

CDataRecoveryHandler::GetDocumentListName

Извлекает имя документа из CDocument объекта.

virtual CString GetDocumentListName(CDocument* pDocument) const;

Параметры

pDocument
[in] Указатель на CDocument. GetDocumentListName извлекает имя документа из этого CDocumentфайла.

Возвращаемое значение

Имя документа из pDocument.

Замечания

Имя CDataRecoveryHandler документа используется в качестве ключа в m_mapDocNameToAutosaveName, m_mapDocNameToDocumentPtr и m_mapDocNameToRestoreBool. Этот параметр позволяет CDataRecoveryHandler отслеживать CDocument объекты, имя файла автосохранение и параметры автосохранений.

CDataRecoveryHandler::GetNormalDocumentTitle

Извлекает нормальное название указанного документа.

virtual CString GetNormalDocumentTitle(CDocument* pDocument);

Параметры

pDocument
[in] Указатель на CDocument.

Возвращаемое значение

Обычный заголовок указанного документа.

Замечания

Обычно заголовок документа — это имя файла документа без пути. Это название в поле имени файла диалогового окна "Сохранить как ".

CDataRecoveryHandler::GetRecoveredDocumentTitle

Создает и возвращает заголовок для восстановленного документа.

virtual CString GetRecoveredDocumentTitle(const CString& strDocumentTitle) const;

Параметры

strDocumentTitle
[in] Обычный заголовок документа.

Возвращаемое значение

Заголовок восстановленного документа.

Замечания

По умолчанию восстановленный заголовок документа является обычным заголовком, добавленным к нему [восстановлено] . Восстановленное название отображается пользователю при CDataRecoveryHandler запросе пользователя к восстановлению автоматически сохраненных документов.

CDataRecoveryHandler::GetRestartIdentifier

Извлекает уникальный идентификатор перезапуска для приложения.

virtual CString GetRestartIdentifier() const;

Возвращаемое значение

Уникальный идентификатор перезапуска.

Замечания

Идентификатор перезапуска является уникальным для каждого выполнения приложения.

Хранит CDataRecoveryHandler сведения в реестре о открытых документах. Когда диспетчер перезапуска выходит из приложения и перезагружает его, он предоставляет идентификатор перезапуска CDataRecoveryHandler. Использует CDataRecoveryHandler идентификатор перезапуска для получения списка ранее открытых документов. Это позволяет CDataRecoveryHandler попытаться найти и восстановить автоматически сохраненные файлы.

CDataRecoveryHandler::GetSaveDocumentInfoOnIdle

Указывает, выполняется ли CDataRecoveryHandler автосохранение в текущем цикле простоя.

virtual BOOL GetSaveDocumentInfoOnIdle() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE указывает CDataRecoveryHandler автосохранение в текущем цикле простоя; FALSE указывает, что он не имеет значения.

CDataRecoveryHandler::GetShutdownByRestartManager

Указывает, приведет ли диспетчер перезапуска к выходу приложения.

virtual BOOL GetShutdownByRestartManager() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE указывает, что диспетчер перезапуска привел к выходу приложения; FALSE указывает, что он не сделал.

CDataRecoveryHandler::Initialize

Инициализирует объект CDataRecoveryHandler.

virtual BOOL Initialize();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если инициализация выполнена успешно; в противном случае ЗНАЧЕНИЕ FALSE.

Замечания

Процесс инициализации загружает путь для хранения файлов автосохранения из реестра. Initialize Если метод не может найти этот каталог или если путь имеет значение NULL, Initialize завершается ошибкой и возвращаетсяFALSE.

Используйте CDataRecoveryHandler::SetAutosavePath , чтобы изменить путь автосохранений после инициализации CDataRecoveryHandlerприложения.

Метод Initialize также запускает таймер для отслеживания при следующем автосохранлении. Используйте CDataRecoveryHandler::SetAutosaveInterval , чтобы изменить интервал автосохранений после инициализации CDataRecoveryHandlerприложения.

CDataRecoveryHandler::QueryRestoreAutosavedDocuments

Отображает диалоговое окно для пользователя для каждого документа, который CDataRecoveryHandler автоматически сохранен. Диалоговое окно определяет, хочет ли пользователь восстановить автоматически сохраненный документ.

virtual void QueryRestoreAutosavedDocuments();

Замечания

Если приложение является Юникодом, этот метод отображает CTaskDialog пользователю. В противном случае платформа использует AfxMessageBox для запроса пользователя.

После QueryRestoreAutosavedDocuments сбора всех ответов от пользователя он сохраняет сведения в переменной-члене m_mapDocNameToRestoreBool. Этот метод не восстанавливает автоматически сохраненные документы.

CDataRecoveryHandler::ReadOpenDocumentList

Загружает открытый список документов из реестра.

virtual BOOL ReadOpenDocumentList();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE указывает, что ReadOpenDocumentList загружена информация по крайней мере для одного документа из реестра; FALSE указывает, что информация о документе не загружена.

Замечания

Эта функция загружает сведения о открытом документе из реестра и сохраняет его в переменной-члене m_mapDocNameToAutosaveName.

После ReadOpenDocumentList загрузки всех данных он удаляет сведения о документе из реестра.

CDataRecoveryHandler::RemoveDocumentInfo

Удаляет предоставленный документ из открытого списка документов.

virtual BOOL RemoveDocumentInfo(CDocument* pDocument);

Параметры

pDocument
[in] Указатель на документ для удаления.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если pDocument было удалено из списка; ЗНАЧЕНИЕ FALSE, если произошла ошибка.

Замечания

Когда пользователь закрывает документ, платформа использует этот метод для удаления из списка открытых документов.

Если RemoveDocumentInfo не удается найти pDocument в списке открытых документов, он ничего не делает и возвращает значение TRUE.

Чтобы использовать этот метод, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES необходимо задать в m_dwRestartManagerSupportFlags.

CDataRecoveryHandler::ReopenPreviousDocuments

Открывает ранее открытые документы.

virtual BOOL ReopenPreviousDocuments();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если был открыт хотя бы один документ; в противном случае ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод открывает последнее сохранение ранее открытых документов. Если документ не был сохранен или автосохранен, ReopenPreviousDocuments открывает пустой документ на основе шаблона для этого типа файла.

Чтобы использовать этот метод, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES необходимо задать в m_dwRestartManagerSupportFlags. Если этот параметр не задан, ReopenPreviousDocuments не выполняет никаких действий и возвращает значение FALSE.

Если нет документов, хранящихся в списке ранее открытых документов, ReopenPreviousDocuments ничего не делает и возвращает значение FALSE.

CDataRecoveryHandler::RestoreAutosavedDocuments

Восстанавливает автосохраняемые документы на основе ввода пользователем.

virtual BOOL RestoreAutosavedDocuments();

Возвращаемое значение

Значение TRUE, если этот метод успешно восстанавливает документы.

Замечания

Этот метод вызывает CDataRecoveryHandler::QueryRestoreAutosavedDocuments , чтобы определить, какие документы пользователь хочет восстановить. Если пользователь решит не восстановить автоматически сохраненный документ, RestoreAutosavedDocuments удалите файл автосохранений. RestoreAutosavedDocuments В противном случае заменяет открытый документ автоматической версией.

Чтобы использовать этот метод, необходимо задать m_dwRestartManagerSupportFlagsAFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES или AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES.

CDataRecoveryHandler::SaveOpenDocumentList

Сохраняет текущий список открытых документов в реестре Windows.

virtual BOOL SaveOpenDocumentList();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если для сохранения открытых документов нет или если они были успешно сохранены. ЗНАЧЕНИЕ FALSE, если есть документы для сохранения в реестре, но они не были сохранены, так как произошла ошибка.

Замечания

Диспетчер перезапуска вызывается SaveOpenDocumentList при неожиданном выходе приложения или при завершении обновления. При перезапуске приложения используется CDataRecoveryHandler::ReadOpenDocumentList для получения списка открытых документов.

Этот метод сохраняет только список открытых документов. Метод CDataRecoveryHandler::AutosaveDocumentInfo отвечает за сохранение самих документов.

CDataRecoveryHandler::SetAutosaveInterval

Задает время между циклами автосохранений в миллисекундах.

Virtual void SetAutosaveInterval(int nAutosaveInterval);

Параметры

nAutosaveInterval
[in] Новый интервал автосохранений в миллисекундах.

CDataRecoveryHandler::SetAutosavePath

Задает каталог, в котором хранятся автоматически сохраненные файлы.

virtual void SetAutosavePath(const CString& strAutosavePath);

Параметры

strAutosavePath
[in] Путь, в котором хранятся файлы автосохранений.

Замечания

Изменение каталога автосохранений в настоящее время не перемещает автоматически сохраненные файлы.

CDataRecoveryHandler::SetRestartIdentifier

Задает уникальный идентификатор перезапуска для этого экземпляра CDataRecoveryHandler.

virtual void SetRestartIdentifier(const CString& strRestartIdentifier);

Параметры

strRestartIdentifier
[in] Уникальный идентификатор диспетчера перезапуска.

Замечания

Диспетчер перезапуска записывает сведения о открытых документах в реестре. Эти сведения хранятся с уникальным идентификатором перезапуска в качестве ключа. Так как идентификатор перезапуска является уникальным для каждого экземпляра приложения, несколько экземпляров приложения могут неожиданно выйти, и диспетчер перезапуска может восстановить каждый из них.

CDataRecoveryHandler::SetSaveDocumentInfoOnIdle

Задает, сохраняет ли CDataRecoveryHandler сведения о открытом документе в реестре Windows во время текущего цикла простоя.

virtual void SetSaveDocumentInfoOnIdle(BOOL bSaveOnIdle);

Параметры

bSaveOnIdle
[in] ЗНАЧЕНИЕ TRUE для сохранения сведений о документе во время текущего цикла простоя; Значение FALSE, чтобы не выполнять сохранение.

CDataRecoveryHandler::SetShutdownByRestartManager

Задает, был ли предыдущий выход приложения вызван диспетчером перезапуска.

virtual void SetShutdownByRestartManager(BOOL bShutdownByRestartManager);

Параметры

bShutdownByRestartManager
[in] ЗНАЧЕНИЕ TRUE, указывающее, что диспетчер перезапуска вызвал выход приложения; ЗНАЧЕНИЕ FALSE, указывающее, что приложение завершило работу по другой причине.

Замечания

Платформа ведет себя по-разному в зависимости от того, был ли предыдущий выход непредвиденным или был ли он инициирован диспетчером перезапуска.

CDataRecoveryHandler::UpdateDocumentInfo

Обновляет сведения для документа, так как пользователь сохранил его.

virtual BOOL UpdateDocumentInfo(CDocument* pDocument);

Параметры

pDocument
[in] Указатель на сохраненный документ.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод удалил автосохраняемый документ и обновил сведения о документе; ЗНАЧЕНИЕ FALSE, если произошла ошибка.

Замечания

Когда пользователь сохраняет документ, приложение удаляет автоматически сохраненный файл, так как он больше не нужен. UpdateDocumentInfo удаляет файл автосохранения путем вызова CDataRecoveryHandler::RemoveDocumentInfo. UpdateDocumentInfo затем добавляет сведения из pDocument в список открытых документов, так как RemoveDocumentInfo удаляет эти сведения, но сохраненный документ по-прежнему открыт.

Чтобы использовать этот метод, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES необходимо задать в m_dwRestartManagerSupportFlags.

См. также

Классы
Диаграмма иерархии
Класс CObject
Практическое руководство. Добавление поддержки диспетчера перезапуска