IXpsOMVisualBrush
COM公式ドキュメント
ビジュアル要素をソースとして使用するブラシです。
解説(Remarks)
次のコード例は、このインターフェイスのインスタンスを作成する方法を示しています。
IXpsOMVisualBrush *newInterface;
// CoInitializeEx がこのスレッドから事前に呼び出されている
// ことが暗黙の前提となる点に注意してください。
hr = CoCreateInstance(
__uuidof(XpsOMObjectFactory),
NULL,
CLSCTX_INPROC_SERVER,
_uuidof(IXpsOMObjectFactory),
reinterpret_cast<LPVOID*>(&xpsFactory)
);
if (SUCCEEDED(hr))
{
hr = xpsFactory->CreateVisualBrush (
&viewBox,
&viewPort,
&newInterface);
if (SUCCEEDED(hr))
{
// 次のいずれかの方法でビジュアルを割り当てます:
newInterface->SetVisualLocal (localVisual);
// または
newInterface->SetVisualLookup (visualLookupKey);
// newInterface を使用します
newInterface->Release();
}
xpsFactory->Release();
}
else
{
// hr に返された HRESULT エラーを評価します
}
// newInterface を使用します
newInterface->Release();
xpsFactory->Release();
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ブラシのソースとして使用される、解決済みのビジュアルのインターフェイスへのポインターを取得します。
| visual | IXpsOMVisual** | out | ブラシのソースとして使用される、解決済みのビジュアルオブジェクトの IXpsOMVisual インターフェイスへのポインターです。ビジュアルが設定されていない場合は、NULL ポインターが返されます。 このパラメーターに返される値は、ビジュアルオブジェクトを設定するために直近に呼び出されたメソッドによって異なります。
|
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| visual が NULL です。 | |
|
SetStrokeBrushLookup によって設定されたルックアップキー名が、ブラシではないオブジェクトを参照しています。 |
|
ルックアップ値と一致するキー名を持つオブジェクトが見つかりませんでした。 |
解説(Remarks)
このメソッドは IXpsOMVisual インターフェイスポインターを返します。ただし、返されるインターフェイスは、IXpsOMCanvas、IXpsOMPath、IXpsOMGlyphs など、IXpsOMVisual を継承する任意のインターフェイスである可能性があります。
ブラシのソースとして使用される、ローカルで共有されないビジュアルのインターフェイスへのポインターを取得します。
| visual | IXpsOMVisual** | out | ブラシのソースとして使用される、ローカルで共有されないビジュアルの IXpsOMVisual インターフェイスへのポインターです。ローカルのビジュアルオブジェクトが設定されていない場合、またはビジュアルのルックアップキーが設定されている場合は、NULL ポインターが返されます。
|
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| visual が NULL です。 |
解説(Remarks)
このメソッドは IXpsOMVisual インターフェイスポインターを返します。ただし、返されるインターフェイスは、IXpsOMCanvas、IXpsOMPath、IXpsOMGlyphs など、IXpsOMVisual を継承する任意のインターフェイスである可能性があります。
ブラシのソースとして使用される、ローカルで共有されないビジュアルのインターフェイスポインターを設定します。
| visual | IXpsOMVisual* | in | ブラシのビジュアルとして設定する IXpsOMVisual インターフェイスへのポインターです。ローカルのビジュアルが設定されている場合、NULL ポインターを渡すとそれが解放されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| visual が認識可能なインターフェイス実装を指していません。XPS ドキュメント API インターフェイスの独自実装はサポートされていません。 |
解説(Remarks)
SetVisualLocal を呼び出すと、ビジュアルのルックアップキーは解放され、GetVisualLookup は lookup パラメーターに NULL ポインターを返します。次の表は、このプロパティのローカル値とルックアップ値の関係を示しています。
| 直近に呼び出されたメソッド | GetVisual によって visual に返されるオブジェクト | GetVisualLocal によって visual に返されるオブジェクト | GetVisualLookup によって lookup に返される文字列 |
|---|---|---|---|
| SetVisualLocal (このメソッド)。 | SetVisualLocal によって設定されたビジュアル。 | SetVisualLocal によって設定されたビジュアル。 | NULL ポインター。 |
| SetVisualLookup | SetVisualLookup によって設定されたキーと一致するルックアップキーで、リソースディレクトリから取得されたビジュアル。 | NULL ポインター。 | SetVisualLookup によって設定されたルックアップキー。 |
| SetVisualLocal と SetVisualLookup のいずれもまだ呼び出されていません。 | NULL ポインター。 | NULL ポインター。 | NULL ポインター。 |
ブラシのソースとして使用されるビジュアルについて、リソースディクショナリ内のルックアップキー名を取得します。
| lookup | LPWSTR* | out | ブラシのソースとして使用されるビジュアルの、リソースディクショナリ内のキー名です。ビジュアルのルックアップキーが設定されていない場合、またはローカルのビジュアルが設定されている場合は、NULL ポインターが返されます。
|
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| lookup が NULL です。 |
解説(Remarks)
このメソッドは、lookup に返される文字列で使用されるメモリを割り当てます。lookup が NULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。
ブラシのソースとして使用される、リソースディクショナリに格納された共有ビジュアルのルックアップキー名を設定します。
| lookup | LPWSTR | in | ブラシのソースとして使用される共有ビジュアルのルックアップキー名です。ルックアップキーが既に設定されている場合、NULL ポインターを渡すとクリアされます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| XML Paper Specification に照らして、lookup の値が有効なルックアップキー文字列ではありません。 | |
| key のルックアップキー名が、ジオメトリではないオブジェクトを参照しています。 | |
|
key に渡された値と一致するキー名を持つオブジェクトが見つかりませんでした。 |
解説(Remarks)
SetVisualLookup を呼び出すと、ローカルのビジュアルは解放され、GetVisualLocal は visual パラメーターに NULL ポインターを返します。次の表は、このプロパティのローカル値とルックアップ値の関係を示しています。
| 直近に呼び出されたメソッド | GetVisual によって visual に返されるオブジェクト | GetVisualLocal によって visual に返されるオブジェクト | GetVisualLookup によって lookup に返される文字列 |
|---|---|---|---|
| SetVisualLocal | SetVisualLocal によって設定されたビジュアル。 | SetVisualLocal によって設定されたビジュアル。 | NULL ポインター。 |
| SetVisualLookup (このメソッド)。 | SetVisualLookup によって設定されたキーと一致するルックアップキーで、リソースディレクトリから取得されたビジュアル。 | NULL ポインター。 | SetVisualLookup によって設定されたルックアップキー。 |
| SetVisualLocal と SetVisualLookup のいずれもまだ呼び出されていません。 | NULL ポインター。 | NULL ポインター。 | NULL ポインター。 |
インターフェイスのディープコピーを作成します。(IXpsOMVisualBrush.Clone)
| visualBrush | IXpsOMVisualBrush** | out | インターフェイスのコピーへのポインターです。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| この操作を実行するのに十分なメモリがありません。 | |
| visualBrush が NULL です。 |
解説(Remarks)
このメソッドは、新しい IXpsOMVisualBrush インターフェイス内のリソースポインターを更新しません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IXpsOMVisualBrush "{97E294AF-5B37-46B4-8057-874D2F64119B}" #usecom global IXpsOMVisualBrush IID_IXpsOMVisualBrush "{}" #comfunc global IXpsOMVisualBrush_GetVisual 18 sptr #comfunc global IXpsOMVisualBrush_GetVisualLocal 19 sptr #comfunc global IXpsOMVisualBrush_SetVisualLocal 20 sptr #comfunc global IXpsOMVisualBrush_GetVisualLookup 21 var #comfunc global IXpsOMVisualBrush_SetVisualLookup 22 wstr #comfunc global IXpsOMVisualBrush_Clone 23 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IXpsOMVisualBrush "{97E294AF-5B37-46B4-8057-874D2F64119B}" #usecom global IXpsOMVisualBrush IID_IXpsOMVisualBrush "{}" #comfunc global IXpsOMVisualBrush_GetVisual 18 sptr #comfunc global IXpsOMVisualBrush_GetVisualLocal 19 sptr #comfunc global IXpsOMVisualBrush_SetVisualLocal 20 sptr #comfunc global IXpsOMVisualBrush_GetVisualLookup 21 sptr #comfunc global IXpsOMVisualBrush_SetVisualLookup 22 wstr #comfunc global IXpsOMVisualBrush_Clone 23 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。