Win32 API 日本語リファレンス
ホームUI.Xaml.Diagnostics › IVisualTreeService2

IVisualTreeService2

COM
IID130f5136-ec43-4f61-89c7-9801a36d2e95継承元IVisualTreeService自前メソッド開始 vtbl15

公式ドキュメント

IVisualTreeService オブジェクトの追加機能を表します。

メソッド 4

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

vtbl 15 HRESULT GetPropertyIndex(ULONGLONG object, LPWSTR propertyName, DWORD* pPropertyIndex)

指定したプロパティ名に対応するプロパティインデックスを取得します。

objectULONGLONGinプロパティインデックスの取得元となる依存関係オブジェクト。
propertyNameLPWSTRinインデックスを取得する依存関係プロパティの名前。
pPropertyIndexDWORD*out指定したプロパティのインデックス。

戻り値

戻り値として考えられるコードには、次の表に示す値が含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドが成功しました。
E_INVALIDARG
propertyName に一致するプロパティが見つからなかったか、そのプロパティを object に適用できません。

解説(Remarks)

このインデックスを GetProperty メソッドに渡すことで、オブジェクト上の特定のプロパティを取得できます。

vtbl 16 HRESULT GetProperty(ULONGLONG object, DWORD propertyIndex, ULONGLONG* pValue)

指定した依存関係プロパティの有効値を取得します。

objectULONGLONGinプロパティ値の取得元となる依存関係オブジェクト。
propertyIndexDWORDin値を取得するプロパティのインデックス。
pValueULONGLONG*outプロパティの有効値。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 17 HRESULT ReplaceResource(ULONGLONG resourceDictionary, ULONGLONG key, ULONGLONG newValue)

既存のリソースを、同じ型の新しいリソースで置き換えます。

resourceDictionaryULONGLONGin置き換えるリソースを含むディクショナリ。
keyULONGLONGin置き換えるリソースのキー。
newValueULONGLONGinリソースを置き換える新しい値。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 18 HRESULT RenderTargetBitmap(ULONGLONG handle, RenderTargetBitmapOptions options, DWORD maxPixelWidth, DWORD maxPixelHeight, IBitmapData** ppBitmapData)

handle で示されるオブジェクトを表す画像を返します。オブジェクトがそのような画像を持たない、または提供できない場合はエラーを返します。

handleULONGLONGin呼び出し元がビットマップを要求しているビジュアルに関連付けられたハンドル。
optionsRenderTargetBitmapOptionsinビジュアルに関連付けられたテクスチャのみをレンダリングするか、そのテクスチャと子要素をレンダリングするかを指定するフラグ。
maxPixelWidthDWORDin返されるビットマップの最大幅(ピクセル単位)。
maxPixelHeightDWORDin返されるビットマップの最大高さ(ピクセル単位)。
ppBitmapDataIBitmapData**out要求されたビットマップ情報、およびそのビットマップに関連する情報を含む構造体。

戻り値

戻り値として考えられるコードには、次の表に示す値が含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドが成功しました。ppBitmapData には画像を含む IBitmapData が設定されます。
E_FAIL
画像を取得または変換できませんでした。ppBitmapData には NULL が設定されます。
E_INVALIDARG
handle が画像を返せるオブジェクトを参照していないか、 options の値が無効であるか、 ppBitmapDataNULL です。

解説(Remarks)

返される画像は次の特性を持ちます。

要求されたビットマップが指定された最大ピクセル幅および最大ピクセル高さの範囲内に収まる場合、ビットマップは元のサイズで返されます。画像のサイズが指定された 2 つの最大値のいずれかを超える場合、ビットマップが返される前に、その寸法が指定された maxPixelWidth および maxPixelHeight の境界内に収まるまで、ビットマップは縦横比を保ったまま一様に縮小されます。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IVisualTreeService2 "{130F5136-EC43-4F61-89C7-9801A36D2E95}"
#usecom global IVisualTreeService2 IID_IVisualTreeService2 "{}"
#comfunc global IVisualTreeService2_GetPropertyIndex    15 int64,wstr,var
#comfunc global IVisualTreeService2_GetProperty         16 int64,int,var
#comfunc global IVisualTreeService2_ReplaceResource     17 int64,int64,int64
#comfunc global IVisualTreeService2_RenderTargetBitmap  18 int64,int,int,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。