PROPSETFLAG 常數

PROPSETFLAG 常數會定義屬性集的特性。 下表所列的值會用於IPropertySetStorage方法的grfFlags參數、StgCreatePropStg函式和StgOpenPropStg函式中。

常數/值 Description
PROPSETFLAG_DEFAULT
0
如果未指定,則預設只會將簡單屬性值寫入屬性集。 使用簡單屬性值可防止屬性集在複合檔案和 IPropertySetStorage的獨立實作中交易。 非 e 屬性值必須用於此用途。
PROPSETFLAG_NONSIMPLE
1
如果指定,可以將非簡單屬性值寫入屬性集,而且屬性集會儲存在儲存體物件中。 非簡單屬性值包含 VARTYPE 為 VT_STORAGE、VT_STREAM、VT_STORED_OBJECT或VT_STREAMED_OBJECT。 如果未指定此旗標,則無法將非簡單類型寫入屬性集。 在複合檔案和獨立實作中,只有在指定 PROPSETFLAG_NONSIMPLE 時,屬性集才能交易。
PROPSETFLAG_ANSI
2
如果指定,則屬性集中所有未明確 Unicode 的字串值,也就是除了 VT_LPWSTR 以外的字串值,都會使用目前的系統 ANSI 字碼頁來儲存。 如需詳細資訊,請參閱 GetACP。 不建議使用此值。 如需詳細資訊,請參閱<備註>。
如果此值不存在,則新屬性集中的字串值會儲存在 Unicode 中。 需要這個值提供的控制項程度,讓使用屬性相關介面的用戶端可以與標準屬性集互通,例如 OLE2 摘要資訊,這可能存在於 ANSI 字碼頁中。
PROPSETFLAG_UNBUFFERED
4
僅適用于 StgCreatePropStgStgOpenPropStg 函式;也就是說,在屬性集介面的獨立實作中。 如果在這些函式中指定,則不會緩衝處理屬性集的變更。 相反地,變更一律會直接寫入屬性集。 呼叫屬性集 IPropertyStorage 方法將會變更它。 不過,根據預設,變更會在內部屬性集快取中緩衝處理,並在呼叫 IPropertyStorage::Commit 方法時,後續寫入屬性集。
設定 PROPSETFLAG_UNBUFFERED 會降低效能,因為屬性集內部緩衝區會在屬性集的每個變更之後自動排清。 不過,直接撰寫變更可防止協調問題。 例如,如果儲存體物件是以交易模式開啟,而且屬性集會緩衝處理。 然後,如果您在儲存體物件上呼叫 IStorage::Commit 方法,將不會挑選屬性集變更做為交易的一部分,因為它們位於尚未排清的緩衝區中。 您必須在呼叫IStorage::Commit 之前呼叫 IPropertyStorage::Commit,才能排清屬性集緩衝區,再認可儲存體的變更。 除了進行兩次呼叫,您也可以設定 PROPSETFLAG_UNBUFFERED ,讓變更一律直接寫入屬性集,而且永遠不會在屬性集的內部快取中緩衝處理。 然後,認可交易儲存體時,將會挑選變更。
PROPSETFLAG_CASE_SENSITIVE
8
如果指定,屬性名稱會區分大小寫。 只有第 1 版屬性集序列化格式才能區分大小寫的屬性名稱。 如需詳細資訊,請參閱 屬性集序列化

備註

您可以使用位運算來設定和檢查這些值,以決定如何建立和開啟屬性集。 屬性集是使用 IPropertySetStorage::Create 方法或 StgCreatePropStg 函式來建立。 它們會使用 IPropertySetStorage::Open 方法或 StgOpenPropStg 函式來開啟。

建議您不要在grfFlags參數中設定PROPSETFLAG_ANSI旗標,將屬性集建立為 Unicode。 也建議您避免使用VT_LPSTR值,並改用VT_LPWSTR值。 當屬性集字碼頁為 Unicode 時,VT_LPSTR字串值會在儲存時轉換成 Unicode,並在擷取時轉換成多位元組字元串值。 當屬性集的字碼頁不是 Unicode 時,屬性名稱、VT_BSTR字串和非簡單屬性值會在儲存時轉換成多位元組字元串,並在擷取時轉換成 Unicode,全部都使用目前的系統 ANSI 字碼頁。

規格需求

需求
最低支援的用戶端
Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
標頭
Propidl.h

另請參閱

FmtIdToPropStgName

IPropertySetStorage::Create

IPropertySetStorage::Open

PropStgNameToFmtId

StgCreatePropSetStg

StgCreatePropStg

StgOpenPropStg