根据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时它仍然失败。
答案 0 :(得分:2)
尝试在创建后立即放置DeleteMultiple。