Win32 API 日本語リファレンス
ホームUI.Shell.PropertiesSystem › IPropertyStoreCapabilities

IPropertyStoreCapabilities

COM
IIDc8e2d566-186e-4d49-bf41-6909ead56acc継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

プロパティをユーザーが UI で編集できるかどうかを判断するメソッドを公開します。

解説(Remarks)

実装するタイミング

プロパティハンドラーは、特定のプロパティをユーザーが編集できないようにするためにこのインターフェイスを実装します。これらのプロパティは通常 UI で編集可能ですが、プロパティハンドラーによる書き込みはサポートされていません。たとえば、プロパティ System.Author は通常編集可能です。プロパティハンドラーの作成者が、System.Author を読み取り用に公開するファイル形式を作成したものの、このプロパティの書き戻しをサポートできない場合、ハンドラーの作成者は System.Author に対して IPropertyStoreCapabilities::IsPropertyWritable から S_FALSE を返すことができます。

プロパティの編集を許可する Shell のユーザーインターフェイス(プロパティダイアログの詳細ペイン詳細タブなど)は、特定のプロパティの編集を許可するかどうかを判断する一環としてこのメソッドを呼び出します。これにより、プロパティハンドラーがプロパティ値の設定またはコミットに失敗した場合に、Shell のプロパティ編集 UI はエラーを表示する代わりにコントロールを無効化できます。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT IsPropertyWritable(PROPERTYKEY* key)

プロパティハンドラーが、特定のプロパティをユーザーによって UI で編集することを許可するかどうかを照会します。

keyPROPERTYKEY*in照会対象のプロパティを表す PROPERTYKEY 構造体への参照です。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値 説明
S_OK
プロパティはハンドラーによって編集および格納できます。
S_FALSE
プロパティは編集できません。

解説(Remarks)

Shell はこのメソッドを通じて、必要に応じてユーザーによるコントロールの編集を無効化します。IPropertyStoreCapabilities をサポートしないハンドラーは、あらゆるプロパティの書き込みをサポートするものと見なされます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IPropertyStoreCapabilities "{C8E2D566-186E-4D49-BF41-6909EAD56ACC}"
#usecom global IPropertyStoreCapabilities IID_IPropertyStoreCapabilities "{}"
#comfunc global IPropertyStoreCapabilities_IsPropertyWritable  3 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。