IPersistFile::IsDirty 方法 (objidl.h)

判斷物件自上次儲存至其目前檔案后是否已變更。

Syntax

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