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


Метод IPersistFile::IsDirty (objidl.h)

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

Синтаксис

HRESULT IsDirty();

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

Этот метод возвращает S_OK, чтобы указать, что объект был изменен. В противном случае возвращается S_FALSE.

Комментарии

Используйте этот метод, чтобы определить, следует ли сохранить объект перед его закрытием. Флаг грязное для объекта условно очищается в методе IPersistFile::Save.

Примечания к вызывающим абонентам

OLE не вызывает IsDirty. Приложения не будут вызывать его, если они также не сохраняют объект в файл.

Любые коды возврата ошибок следует рассматривать как признак изменения объекта. Если этот метод явно не возвращает S_FALSE, предположим, что объект необходимо сохранить.

Примечания для разработчиков

Объект без содержащихся объектов просто проверяет флаг грязное, чтобы вернуть соответствующий результат.

Контейнер с одним или несколькими автономными объектами должен поддерживать внутренний флаг грязное, который устанавливается при изменении любого из содержащихся в нем объектов с момента последнего сохранения. Для этого контейнер должен поддерживать приемник рекомендаций путем реализации интерфейса IAdviseSink . Затем контейнер может зарегистрировать каждую ссылку или внедрение для уведомлений об изменении данных с помощью вызова метода IDataObject::D Advise. Затем контейнер может задать свой внутренний флаг грязное при получении уведомления IAdviseSink::OnDataChange. Если контейнер не регистрируется для уведомлений об изменении данных, реализация IPersistFile::IsDirty вызовет IPersistStorage::IsDirty для каждого из содержащихся в нем объектов, чтобы определить, были ли они изменены.

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

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objidl.h

См. также раздел

IAdviseSink::OnDataChange

IDataObject::D Advise

IPersistFile