PROPSETFLAG 常量

PROPSETFLAG 常量定义属性集的特征。 下表中列出的值用于 IPropertySetStorage方法的 GrfFlags 参数、 StgCreatePropStg函数和 StgOpenPropStg函数。

常量/值 描述
PROPSETFLAG _默认值
0
如果未指定,则默认情况下只能向属性集写入简单的属性值。 使用简单属性值可防止在复合文件和 IPropertySetStorage的独立实现中处理属性集。 非 e 属性值必须用于此目的。
PROPSETFLAG _不简单
1
如果已指定,则可以将不简单属性值写入属性集,并将属性集保存在存储对象中。 非简单属性值包括具有 VT _ 存储、vt _ STREAM、vt _ 存储 _ 对象或 VT _ 流式处理 _ 对象的 VARTYPE。 如果未指定此标志,则非简单类型不能写入属性集。 在复合文件和独立实现中,仅当指定了 PROPSETFLAG _ 不简单 时,才可以处理属性集。
PROPSETFLAG _ANSI
2
如果指定此属性,则属性集中并非显式 Unicode 的所有字符串值(即,非 VT _ LPWSTR)将与当前系统 ANSI 代码页一起存储。 有关详细信息,请参阅 GetACP。 不建议使用此值。 有关详细信息,请参阅“备注”。
如果此值不存在,则新属性集中的字符串值将存储为 Unicode。 此值所提供的控件的程度是必需的,以便使用与属性相关的接口的客户端可以与标准属性集(如 OLE2 摘要信息)互操作,这可能存在于 ANSI 代码页中。
PROPSETFLAG _无缓冲
4
仅与 StgCreatePropStgStgOpenPropStg 函数一起使用;也就是说,在属性集接口的独立实现中。 如果在这些函数中指定了,则不缓冲对属性集的更改。 相反,更改始终直接写入属性集。 对属性集 IPropertyStorage 方法的调用将更改它。 但是,默认情况下,在调用 IPropertyStorage:: Commit 方法时,将在内部属性集缓存中缓冲更改,并随后将其写入属性集。
设置 PROPSETFLAG 无 _ 缓冲 降低了性能,因为在对属性集进行每次更改后,将自动刷新属性集内部缓冲区。 但是,直接写入更改会防止出现协调问题。 例如,如果在事务处理模式下打开存储对象,并缓冲属性集。 然后,如果对存储对象调用 IStorage:: Commit 方法,则将不会在事务中选取属性集更改,因为它们位于尚未刷新的缓冲区中。 在将更改提交到存储之前,必须先调用 IPropertyStorage:: commit,然后才能调用 IStorage:: commit 来刷新属性集缓冲区。 作为进行两次调用的替代方法,可以将 PROPSETFLAG _ 设置为无缓冲,以使更改始终直接写入属性集,且永远不会在属性集的内部缓存中进行缓冲。 然后,将在提交事务处理存储时选取更改。
PROPSETFLAG _区分 _ 大小写
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 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Propidl

另请参阅

FmtIdToPropStgName

IPropertySetStorage:: Create

IPropertySetStorage:: Open

PropStgNameToFmtId

StgCreatePropSetStg

StgCreatePropStg

StgOpenPropStg