Практическое руководство. Добавление поддержки диспетчера перезапуска
Диспетчер перезапуска — это функция, добавленная в операционные системы Visual Studio для Windows Vista или более поздних версий. Диспетчер перезапуска обеспечивает функции поддержки для приложения в случае его непредвиденного закрытия или перезапуска. Поведение диспетчера перезапуска зависит от типа приложения. Если приложение является редактором документов, то диспетчер перезапуска позволяет приложению автоматически сохранять состояние и содержимое всех открытых документов, а затем перезапускает приложение после непредвиденного закрытия. Если приложение не является редактором документов, диспетчер перезапуска перезапускает приложение, однако не может сохранить состояние приложения по умолчанию.
После перезапуска приложение выводит диалоговое окно задач (для Юникода). Если это приложение ANSI, оно выводит окно сообщения Windows. На этом этапе пользователь выбирает, нужно ли восстановить автоматически сохраненные документы. Если пользователь не восстанавливает автоматически сохраненные документы, диспетчер перезапуска удаляет временные файлы.
Примечание.
Поведение диспетчера перезапуска по умолчанию можно переопределить для сохранения данных и перезапуска приложения.
По умолчанию приложения MFC, созданные с помощью мастера проектов в Visual Studio, поддерживают диспетчер перезапуска при запуске приложений на компьютере с операционной системой Windows Vista или более поздней версии. Если поддержка диспетчера перезапуска в приложении не требуется, можно отключить диспетчер перезапуска в мастере создания проекта.
Добавление поддержки диспетчера перезапуска в существующее приложение
Откройте существующее приложение MFC в Visual Studio.
Откройте исходный файл для основного приложения. По умолчанию это CPP-файл, который имеет то же имя, что и приложение. Например, исходный файл основного приложения для MyProject — MyProject.cpp.
Найдите конструктор для основного приложения. Например, если проект — MyProject, конструктор имеет имя
CMyProjectApp::CMyProjectApp()
.Добавьте следующий код в конструктор.
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;
Убедитесь, что метод
InitInstance
приложения вызывает родительский методInitInstance
: CWinApp::InitInstance илиCWinAppEx::InitInstance
. МетодInitInstance
отвечает за проверка параметр m_dwRestartManagerSupportFlags.Скомпилируйте и запустите приложение.
См. также
Класс CDataRecoveryHandler
CWinApp::m_dwRestartManagerSupportFlags
Класс CWinApp
CWinApp::m_nAutosaveInterval
CDocument::OnDocumentEvent