根据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 时仍然失败。