2

根据IPropertyStorage::WriteMultiple 方法的备注部分...

创建新属性集时,特殊代码页(属性 ID 1)和区域设置 ID(属性 ID 0x80000000)属性会自动写入属性集。

但是,我希望我的 PropertySet 省略 LOCALE ID。我努力了

specs[0].ulKind = PRSPEC_PROPID;
specs[0].propid = PID_LOCALE;
//specs[0].lpwstr = 0;
hr = pPropStorage->DeleteMultiple(1, specs);

但这失败了

0x80030057 无效参数错误

如何省略这个不需要的属性 ID?我试过IPropertyStorage::Commit()前后做一个。但是调用时也会产生同样的错误DeleteMultiple()

注意:我尝试过使用和不使用 specs[0].lpwstr = 0; 但这很愚蠢,因为它是与 propid 的“联合”,所以写它们都改变了第一个。但是仅设置 propid = PID_LOCALE 时仍然失败。

4

1 回答 1

2

尝试将 DeleteMultiple 放在 Create 之后。

于 2012-08-10T15:26:53.070 回答