如何删除IPropertyStorage自动添加的LOCALE属性?

时间:2012-08-10 13:47:25

标签: c++ ipropertystorage

根据IPropertyStorage::WriteMultiple Method ...

的备注部分
  

创建新属性集时,会自动将特殊代码页(属性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()时会产生同样的错误。

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

1 个答案:

答案 0 :(得分:2)

尝试在创建后立即放置Del​​eteMultiple。