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


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

Диспетчер перезапуска — это компонент, добавленный в 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;
    
  5. Убедитесь, что метод [InitInstance] приложения вызывает родительский метод InitInstance: CWinApp::InitInstance или CWinAppEx::InitInstance. Метод InitInstance отвечает за проверку параметра m_dwRestartManagerSupportFlags.

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

См. также

Ссылки

Класс CDataRecoveryHandler

CWinApp::m_dwRestartManagerSupportFlags

Класс CWinApp

CWinApp::m_nAutosaveInterval

CDocument::OnDocumentEvent