IPersistFile::Save 方法 (objidl.h)

將對象的複本儲存至指定的檔案。

語法

HRESULT Save(
  [in] LPCOLESTR pszFileName,
  [in] BOOL      fRemember
);

參數

[in] pszFileName

應該儲存物件之檔案的絕對路徑。 如果 pszFileNameNULL,則對象應該會在有數據時,將其數據儲存至目前的檔案。

[in] fRemember

指出 pszFileName 參數是否要當做目前的工作檔案使用。 如果 TRUE,pszFileName 會變成目前的檔案,而且對象應該在儲存之後清除其中途旗標。 如果 為 FALSE,則此儲存作業為 [另存 新檔... ] 作業。 在此情況下,目前的檔案不會變更,而且對象不應該清除其中途旗標。 如果 pszFileNameNULL,實作應該忽略 fRemember 旗標。

傳回值

如果成功儲存物件,則會S_OK傳回值。 否則,它會S_FALSE。 這個方法也可以傳回各種記憶體錯誤。

備註

您可以呼叫這個方法,以下列三種方式之一將物件儲存至指定的檔案:

實作者必須偵測呼叫端所要求的儲存作業類型。 如果 pszFileName 參數為 NULL,則會要求 Save 。 如果 pszFileName 參數不是 NULL,請使用 fRemember 參數的值來區別另存新 另存新檔

[另存檔] 或 [另存新檔] 作業中, IPersistFile::Save 會在儲存後清除內部中途旗標,並將 IAdviseSink::OnSave 通知傳送至任何諮詢連線 (另請參閱 IOleAdviseHolder::SendOnSave) 。 此外,在這些作業中,物件會處於 NoScribble 模式,直到它收到 IPersistFile::SaveCompleted 呼叫為止。 在 NoScribble 模式中,物件不得寫入檔案。

在另存 檔案例中,實作也應該將 IAdviseSink::OnRename 通知傳送至任何諮詢連線, (另請參閱 IOleAdviseHolder::SendOnRename) 。

在 [ 另存新檔] 案例中,實作不會在儲存之後清除內部中途旗標。

來電者附註

OLE 不會呼叫 IPersistFile::Save。 一般而言,除非應用程式將物件直接儲存至檔案,否則不會呼叫它,這通常會保留給使用者。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 objidl.h

另請參閱

IPersistFile