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


Сохранение настраиваемого документа

Среда обрабатывает команды "Сохранить", "Сохранить как" и "Сохранить все ". Когда пользователь нажимает кнопку "Сохранить", "Сохранить как" или "Сохранить все" в меню "Файл" или закрывает решение, в результате чего происходит следующий процесс.

Сохранение редактора клиентов

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

Этот процесс подробно описан в следующих шагах:

  1. Для команд "Сохранить и сохранить как" среда использует SVsShellMonitorSelection службу для определения активного окна документа и, следовательно, того, какие элементы следует сохранить. После того как активное окно документа известно, среда находит указатель иерархии и идентификатор элемента (itemID) для документа в работающей таблице документов. Дополнительные сведения см. в статье "Запуск таблицы документов".

    Для команды "Сохранить все" среда использует сведения в работающей таблице документов для компиляции списка всех элементов для сохранения.

  2. Когда решение получает QueryStatus вызов, он выполняет итерацию по набору выбранных элементов (т. е. несколько выбранных элементов, предоставляемых SVsShellMonitorSelection службой).

  3. На каждом элементе в выборе решение использует указатель иерархии для вызова IsItemDirty метода, чтобы определить, должна ли быть включена команда меню "Сохранить". Если один или несколько элементов грязное, то команда "Сохранить" включена. Если иерархия использует стандартный редактор, иерархия делегирует запросы к грязное состоянию в редактор путем вызова IsDocDataDirty метода.

  4. На каждом выбранном элементе, грязное, решение использует указатель иерархии для вызова SaveItem метода в соответствующих иерархиях.

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

    Примечание.

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