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


Практическое руководство. Добавление поддержки Диспетчера перезапуска

Диспетчер перезапуска — это функция, добавленная в операционные системы Visual Studio для Windows Vista или более поздних версий. Диспетчер перезапуска добавляет поддержку приложения при неожиданном закрытии или перезапуске. Поведение диспетчера перезапуска зависит от типа приложения. Если приложение является редактором документов, диспетчер перезапуска включил приложение для автоматического сохранения состояния и содержимого всех открытых документов и перезапускает приложение после неожиданного закрытия. Если приложение не является редактором документов, диспетчер перезапуска перезагрузит приложение, но он не может сохранить состояние приложения по умолчанию.

После перезапуска приложение отображает диалоговое окно задачи, если приложение является Юникодом. Если это приложение ANSI, приложение отображает окно сообщения Windows. На этом этапе пользователь выбирает, следует ли восстановить автоматически сохраненные документы. Если пользователь не восстанавливает автоматически сохраненные документы, диспетчер перезапуска удаляет временные файлы.

Замечание

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

По умолчанию приложения MFC, созданные с помощью мастера проектов в Visual Studio, поддерживают диспетчер перезапуска при запуске приложений на компьютере с операционной системой Windows Vista или более поздней версии. Если вы не хотите, чтобы приложение поддерживало диспетчер перезапуска, можно отключить диспетчер перезапуска в мастере создания проекта.

Добавление поддержки диспетчера перезапуска в существующее приложение

  1. Откройте существующее приложение MFC в Visual Studio.

  2. Откройте исходный файл для основного приложения. По умолчанию это файл .cpp, имеющий то же имя, что и приложение. Например, основной файл источника приложения для MyProject является MyProject.cpp.

  3. Найдите конструктор для основного приложения. Например, если проект — MyProject, конструктор имеет значение CMyProjectApp::CMyProjectApp().

  4. Добавьте следующую строку кода в конструктор.

    m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;
  1. Убедитесь, что метод InitInstance вашего приложения вызывает свой InitInstance метод CWinApp::InitInstance или CWinAppEx::InitInstance. Метод InitInstance отвечает за проверку параметра m_dwRestartManagerSupportFlags .

  2. Скомпилируйте и запустите приложение.

См. также

Класс CDataRecoveryHandler
CWinApp::m_dwRestartManagerSupportFlags
Класс CWinApp
CWinApp::m_nAutosaveInterval
CDocument::OnDocumentEvent