2

IPropertyStorage::WriteMultipleメソッドの備考セクションによると..。

新しいプロパティセットが作成されると、特別なコードページ(プロパティID 1)とロケールID(プロパティID 0x80000000)のプロパティがプロパティセットに自動的に書き込まれます。

ただし、PropertySetでロケール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

Createの直後にDeleteMultipleを配置してみてください。

于 2012-08-10T15:26:53.070 に答える