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
标头 objidl.h

另请参阅

IAdviseSink::OnDataChange

IDataObject::D Advise

IPersistFile