IInkDisp
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
。 (IInkDisp)
メソッド 25
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
オブジェクトに含まれる、またはオブジェクトの作成に使用されたストロークのコレクションを取得します。 (IInkDisp.get_Strokes)
| Strokes | IInkStrokes** | out | インクに含まれるすべてのストロークのコレクションを受け取るポインタである。 |
解説(Remarks)
このストロークのコレクションは、InkDisp オブジェクトに含まれるストロークのコピーである場合と、そのオブジェクトまたはコレクションの作成に使用されたストロークである場合があります。
オブジェクトに格納されている、アプリケーション定義のデータのコレクションを取得します。 (IInkDisp.get_ExtendedProperties)
| Properties | IInkExtendedProperties** | out | インク オブジェクトに関連付けられた拡張プロパティのコレクションを受け取るポインタである。 |
解説(Remarks)
アプリケーションは ExtendedProperties プロパティを使用して、オブジェクトに格納されているカスタムデータにアクセスできます。このカスタムデータは、オブジェクトとともに自動的にシリアル化されます。
InkDisp Class オブジェクトのストロークが、インクを最後に保存した時点から変更されているかどうかを示す値を取得または設定します。 (Get)
| Dirty | VARIANT_BOOL* | out | 前回の保存以降にインクが変更されたかどうかを受け取る VARIANT_BOOL へのポインタである。 |
解説(Remarks)
インクが保存されると、dirty フラグは自動的にクリアされ、このプロパティの値は VARIANT_FALSE になります。インクを保存するには、Save Method メソッドを呼び出します。
InkDisp Class オブジェクトのストロークが、インクを最後に保存した時点から変更されているかどうかを示す値を取得または設定します。 (Put)
| Dirty | VARIANT_BOOL | in | インクの変更フラグ(ダーティ状態)に設定する値を指定する VARIANT_BOOL である。 |
解説(Remarks)
インクが保存されると、dirty フラグは自動的にクリアされ、このプロパティの値は VARIANT_FALSE になります。インクを保存するには、Save Method メソッドを呼び出します。
インクとともに永続化されるカスタムストロークのコレクションを取得します。
| ppunkInkCustomStrokes | IInkCustomStrokes** | out | インクに含まれる名前付きストローク集合のコレクションを受け取るポインタである。 |
InkDisp オブジェクト内のすべてのストローク、個々のストローク、または InkStrokes コレクションについて、インク空間座標での境界ボックスを取得します。 (IInkDisp.GetBoundingBox)
| BoundingBoxMode | InkBoundingBoxMode | in | 省略可能。境界ボックスの計算に使用するストロークの特性を指定します。境界ボックスの計算にストロークの特性をどのように使用するかの詳細については、BoundingBoxMode 列挙型を参照してください。 既定値は -1 (IBBM_DEFAULT) で、ストロークのすべての特性を使用して境界ボックスを指定することを意味します。 |
| Rectangle | IInkRectangle** | out | このメソッドが返されるときに、InkDisp オブジェクト、IInkStrokeDisp オブジェクト、または InkStrokes コレクションの境界ボックスを定義する四角形が格納されます。 メモ IInkStrokeDisp オブジェクトの場合、返される境界ボックスはストロークの境界ボックスのコピーであるため、返された境界ボックスを変更してもストロークの位置には影響しません。
|
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
| 予期しないパラメーターまたはプロパティの型です。 | |
|
InkRectangle オブジェクトが登録されていません。 |
解説(Remarks)
境界ボックスがペンの幅の影響を受ける場合、その幅は InkRenderer のビュー変換に合わせて適切にスケーリングされます。これは、ペンの幅にビュー変換の行列式の平方根を掛けることで行われます。
InkDisp オブジェクトの Strokes コレクションから InkStrokes コレクションを削除します。
| Strokes | IInkStrokes* | inoptional | 省略可能。InkDisp オブジェクトから削除するストロークのコレクションを指定します。既定値は NULL です。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 操作の実行に使用するメモリを割り当てられません。 | |
| 不特定のエラーが発生しました。 | |
|
ストロークの InkDisp オブジェクトは、対象の InkDisp オブジェクトと一致している必要があります。 |
|
メソッド内部で例外が発生しました。 |
| 予期しないパラメーターまたはプロパティの型です。 |
解説(Remarks)
InkStrokes コレクションが渡されなかった場合、このメソッドは InkDisp オブジェクト内のすべてのストロークを削除します。一度に 1 つのストロークだけを削除するには、DeleteStroke メソッドを呼び出します。
削除されたストロークが InkDisp オブジェクトのストロークコレクションの末尾に位置していない場合、InkDisp オブジェクトは InkDisp オブジェクト内に残っているストロークのインデックスを振り直します。
InkDisp オブジェクトから IInkStrokeDisp オブジェクトを削除します。
| Stroke | IInkStrokeDisp* | inoptional | InkDisp オブジェクトから削除するストロークです。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 不特定のエラーが発生しました。 | |
|
ストロークの InkDisp オブジェクトは、対象の InkDisp オブジェクトと一致している必要があります。 |
|
メソッド内部で例外が発生しました。 |
| 予期しないパラメーターまたはプロパティの型です。 |
解説(Remarks)
このメソッドは 1 つのストロークだけを削除します。ストロークのコレクションを削除するには、DeleteStrokes メソッドを呼び出します。
抽出するストロークを、指定されたストロークのコレクションによって決定し、InkDisp Class から切り取りまたはコピーして新しい InkDisp Class に格納するストロークを指定します。
| Strokes | IInkStrokes* | inoptional | 省略可能。抽出するストロークのコレクションを指定します。既定値は 0 で、すべてのストロークを抽出することを示します。 |
| ExtractFlags | InkExtractFlags | in | 省略可能。インクを新しい Ink オブジェクトに切り取るかコピーするかを指定する InkExtractFlags Enumeration 型を指定します。既定値は IEF_DEFAULT で、ストロークを切り取ります。 |
| ExtractedInk | IInkDisp** | out | このメソッドが返されるときに、切り取りまたはコピーされた抽出済みストロークのコレクションを含む、新しい InkDisp Class オブジェクトへのポインターが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
InkStrokes Collection コレクションの InkDisp Class オブジェクトは、対象の InkDisp Class と一致している必要があります。 |
|
メソッド内部で例外が発生しました。 |
|
一部のストロークが抽出されませんでした。 |
| 操作の実行に使用するメモリを割り当てられません。 | |
| 抽出フラグが無効です。 | |
|
|
指定した四角形によって抽出するストロークを決定し、既存の InkDisp オブジェクトからストロークを切り取りまたはコピーして、新しい InkDisp オブジェクトに貼り付けます。
| Rectangle | IInkRectangle* | inoptional | InkDisp オブジェクトから抽出するインクの範囲を区切る InkRectangle オブジェクトを指定します。 |
| extractFlags | InkExtractFlags | in | 省略可能。既存の InkDisp オブジェクトからインクを切り取るかコピーするかを決定する InkExtractFlags 列挙型を指定します。既定値は IEF_DEFAULT で、既存の InkDisp オブジェクトからストロークを切り取ります。 |
| ExtractedInk | IInkDisp** | out | このメソッドが返されるときに、抽出されたストロークのコレクションを含む InkDisp オブジェクトへのポインターが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
|
一部のストロークが抽出されませんでした。 |
| 操作を完了するためのメモリを割り当てられません。 | |
| 抽出フラグが無効です。 | |
|
Ink オブジェクトが登録されていませんでした。 |
解説(Remarks)
新しい InkDisp オブジェクトは、元の InkDisp オブジェクトの描画属性、プロパティ、および座標を保持します。
このメソッドは、元のオブジェクトから削除または切り取られたストロークを含まない新しい InkDisp オブジェクトを作成する場合に便利です。
指定したストロークのコレクションからストロークを抽出するには、ExtractStrokes Method を呼び出します。
新しい InkDisp オブジェクトには、四角形の内側にあるストロークの部分だけが追加されます。
extractFlags パラメーターが RemoveFromOriginal または Default の場合、四角形と交差するストロークは分割され、四角形の内側の部分は既存の InkDisp オブジェクトから削除されます。
IInkStrokeDisp オブジェクトまたは InkStrokes コレクションのうち、四角形の外側にある部分を削除します。 (IInkDisp.Clip)
| Rectangle | IInkRectangle* | inoptional | この四角形の外側にあるストロークをクリップします。四角形はインク空間座標で指定します。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
InkDisp オブジェクトが登録されていません。 |
| クリップする四角形が無効です。 | |
|
メソッド内部で例外が発生しました。 |
| 不特定のエラーが発生しました。 |
解説(Remarks)
InkDisp オブジェクトの場合、四角形と交差するすべてのストロークは交点で分割されます。四角形の外側にあるストロークの部分はすべて InkDisp オブジェクトから削除されます。このメソッドは、ストロークが四角形と交差する位置に新しい点を追加することがあります。InkDisp オブジェクトに対して Clip メソッドを呼び出した後、InkDisp オブジェクトのストロークコレクション内にあるストロークの ID は一意であることが保証されますが、その他の情報が保持されることは保証されません。
このメソッドは、クリップの際にペンの幅を考慮しません。実際の インク データ (ストロークデータ) のみをクリップします。
IInkStrokeDisp オブジェクトまたは InkStrokes コレクションの場合、Clip メソッドは親の InkDisp オブジェクトを更新します。InkDisp オブジェクトからインクが削除されると、その InkDisp オブジェクトに対して定義されている IInkStrokeDisp オブジェクトや InkStrokes コレクションが無効になる場合があります。
インクデータの詳細については、Ink Data を参照してください。
InkDisp オブジェクトの複製を作成します。
| NewInk | IInkDisp** | out | このメソッドが返されるときに、新しく作成された InkDisp オブジェクトへのポインターが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| 操作を完了するためのメモリを割り当てられません。 | |
| 不特定のエラーが発生しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
|
InkDisp オブジェクトが登録されていませんでした。 |
| 予期しないパラメーターまたはプロパティの型です。 |
解説(Remarks)
Clone メソッドは、InkDisp、InkDrawingAttributes、InkRecognizerContext の各オブジェクトに定義されています。Clone メソッドは、元のオブジェクトの完全なコピーを返します。
ほとんどの場合、複製されたオブジェクトは元のオブジェクトの完全なコピーですが、2 つのオブジェクトの間に関連はありません。この例外の詳細については、このトピックの解説セクションを参照してください。
InkDisp オブジェクト: 複製された InkDisp オブジェクトが元のオブジェクトの完全なコピーにならない唯一のケースは、dirty 状態の InkDisp オブジェクトを複製した場合です。この場合、複製された InkDisp オブジェクトの Dirty プロパティは FALSE になります。複製された InkDisp オブジェクトのその他のプロパティはすべて完全なコピーです。
指定した円の内部に完全に含まれるか、その円と交差する InkStrokes コレクションを取得します。
| X | INT | in | ヒットテストに使用する円の中心の x 座標を、インク空間単位で指定します。 |
| Y | INT | in | ヒットテストに使用する円の中心の y 座標を、インク空間単位で指定します。 |
| radius | FLOAT | in | ヒットテストに使用する円の半径を、インク空間単位で指定します。 |
| Strokes | IInkStrokes** | out | このメソッドが返されるときに、指定した円の内部に完全に含まれるか、その円と交差するストロークのコレクションが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
| 表示ハンドルが無効です。 | |
| 予期しないパラメーターまたはプロパティの型です。 |
解説(Remarks)
ストロークが円と交差する場合は、そのストローク全体が返されます。
このメソッドは、ペンの幅全体、ベジエによる平滑化 (存在する場合)、ペン先の形状など、ストロークに適用される描画属性一式を考慮して交差を計算します。
ストロークまたはストロークのコレクションに対して回転またはせん断の変換を行った後は、変換後の x- 座標と y- 座標は元の座標と同心ではなくなります。そのため、radius 引数を x- 座標や y- 座標から計算しないでください。
指定したストロークのどの点がテスト領域と交差するかを判断するには、IInkStrokeDisp オブジェクトの HitTest メソッドを呼び出します。
アプリケーションは、結果として得られるストロークのコレクションを受け取るポインターを常に渡す必要があります。交差がない場合、コレクションの数は 0 になります。
指定した四角形の内部に含まれるストロークを取得します。
| SelectionRectangle | IInkRectangle* | inoptional | インク空間座標で指定する、InkRectangle 型の選択四角形です。 |
| IntersectPercent | FLOAT | in | どのストロークをコレクションに含めるかを決定する、float 型または single 型のパーセント値です。四角形と交差するストロークは、そのストロークのうち四角形の内部に含まれる点の割合が IntersectPercent のパーセント値以上である場合に、コレクションに含まれます。 |
| Strokes | IInkStrokes** | out | このメソッドが返されるときに、インクを構成するストロークのコレクションへのポインターが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
| 表示ハンドルが無効です。 |
解説(Remarks)
指定したストロークのどの点がテスト領域と交差するかを判断するには、IInkStrokeDisp オブジェクトの GetRectangleIntersections メソッドを呼び出します。このメソッドは、ストロークが指定した四角形と交差する点を取得します。
折れ線で囲まれた選択領域内のストロークを取得します。
| Points | VARIANT | in | ストロークを選択するために選択ツールで使用される点です。選択領域は、選択の境界線が最初に自己交差する部分の内側の領域です。境界線が自己交差しない場合、このメソッドは配列の末尾に点を追加し、最初の点から最後の点までを結ぶ直線を作成します。境界線が直線である (選択の境界線の内側に領域がない) 場合、ストロークは選択されません。 VARIANT 構造体の詳細については、Using the COM Library を参照してください。 |
| IntersectPercent | FLOAT | in | 結果として得られるストロークのコレクションにストロークを含めるために、選択ツールの内部に含まれている必要があるストロークの点の割合です。0 (0) の場合、選択ツールの内部に含まれるストロークと選択ツールと交差するストロークがすべて、結果のストロークコレクションに含まれます。100 の場合、選択ツールに完全に含まれるストロークだけがコレクションに含まれます。選択ツールと交差するストロークは、そのストロークのうち選択ツールの内部に含まれる点の割合が percentIntersect のパーセント値以上である場合に、コレクションに含まれます。小数部を含むパーセント値は切り上げられます。 |
| LassoPoints | VARIANT* | inoutoptional | 省略可能。選択に使用された選択ツールの特定の部分を取得します。ユーザーはさまざまな形状の選択ツールを描画でき、複数回重なる場合もあるため、選択ツールのどの部分が選択に使用されたかを示すのに役立ちます。既定値は NULL ポインターで、情報を返さないことを意味します。 VARIANT 構造体の詳細については、Using the COM Library を参照してください。 |
| Strokes | IInkStrokes** | out | このメソッドが返されるときに、インクを構成するストロークのコレクションへのポインターが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
| 表示ハンドルが無効です。 | |
| メモリを割り当てられません。 |
InkDisp オブジェクト内で、指定した点に最も近い IInkStrokeDisp を取得します。必要に応じて、最も近い点のインデックスと、指定した点からストロークまでの距離も返します。
| X | INT | in | その点のインク空間での x- 座標です。 |
| Y | INT | in | その点のインク空間での y- 座標を指定します。 |
| PointOnStroke | FLOAT* | inout | 省略可能。InkDisp オブジェクト内で、指定した点に最も近いストローク線上の位置を取得します。たとえば値 1.5 は、その位置がストロークの 1 番目と 2 番目のパケットのちょうど中間にあることを示します。このパラメーターには NULL を指定できます。既定値は 0 です。 |
| DistanceFromPacket | FLOAT* | inout | 省略可能。インク空間で指定した点と、InkDisp オブジェクト内の最も近いストロークとの距離を取得します。このパラメーターには NULL を指定できます。既定値は 0 です。 |
| Stroke | IInkStrokeDisp** | out | このメソッドが返されるときに、InkDisp オブジェクト内で指定した点に最も近い点を含む IInkStrokeDisp が格納されます。指定した点から等距離にある点を含むストロークが複数存在する場合、この結果の値は不定です。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 不特定のエラーが発生しました。 | |
|
メソッド内部で例外が発生しました。 |
| メモリを割り当てられません。 |
解説(Remarks)
ストローク線上の位置は 2 つの物理的な座標点の間に来ることがあるため、出力の point パラメーターは浮動小数点数として定義されています。この値を使用して Split メソッドでストロークを分割したり、値を切り上げまたは切り捨ててストローク内のパケットのインデックスとして使用したりできます。
distanceFromPacket パラメーターは、その点からストロークの外形 (エンベロープ) までの距離を表します。これは、2 点間の距離からストロークの幅の半分を引いた値です。
既存の IInkStrokeDisp オブジェクトから新しい InkStrokes コレクションを作成します。
| StrokeIds | VARIANT | in | 省略可能。InkDisp オブジェクトに存在するストローク ID の配列を指定します。これらの ID を持つストロークが、新しい InkStrokes コレクションに追加されます。既定値は NULL です。 VARIANT 構造体の詳細については、Using the COM Library を参照してください。 |
| Strokes | IInkStrokes** | out | このメソッドが返されるときに、新しい InkStrokes コレクションへのポインターが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| VARIANT の型が無効です (VT_ARRAY | VT_I4 のみサポートされます)。 | |
|
メソッド内部で例外が発生しました。 |
| 新しい Strokes コレクションを作成するためのメモリを割り当てられません。 | |
| 存在しないストローク ID がメソッドに渡されました。 |
解説(Remarks)
ids パラメーターが NULL または空の配列の場合、空の InkStrokes コレクションが作成されます。
指定した Strokes コレクションを、指定した四角形の位置でこの InkDisp オブジェクトに追加します。
| SourceStrokes | IInkStrokes* | inoptional | インクに追加するストロークです。これらのソースストロークは、この InkDisp オブジェクトの末尾に追加されます。 |
| TargetRectangle | IInkRectangle* | inoptional | ストロークを追加する位置を示す、インク空間座標での InkRectangle です。四角形の座標が {0,0,0,0} の場合、実行時エラーが発生します。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| 不特定のエラーが発生しました。 | |
|
ポインターが有効なオブジェクトを指していません。 |
|
メソッド内部で例外が発生しました。 |
| 四角形の上辺と下辺が同じ値です。 |
解説(Remarks)
挿入時に、ストロークはその境界ボックスから指定した四角形に合わせて拡大縮小されます。
このメソッドは、単一の InkDisp オブジェクト内でストロークをコピーする場合にも使用できます。ソースとなるインクストロークは、別の InkDisp オブジェクトのものである必要はありません。
インクを指定した InkPersistenceFormat に変換し、指定した InkPersistenceCompressionMode を使用して保存して、バイナリデータをバイト配列で返します。
| PersistenceFormat | InkPersistenceFormat | in | 省略可能。永続化されるインクの形式を示す InkPersistenceFormat の値のいずれかを設定します。既定値は InkSerializedFormat です。 | ||||||||
| CompressionMode | InkPersistenceCompressionMode | in | 省略可能。永続化されるインクの圧縮モードを指定する InkPersistenceCompressionMode の値のいずれかです。 既定値は IPCM_Default です。
| ||||||||
| Data | VARIANT* | out | このメソッドが返されるときに、永続化されたインクを含むバイト配列が格納されます。 VARIANT 構造体の詳細については、Using the COM Library を参照してください。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
| 圧縮モードが無効です。 | |
| バイト配列を割り当てられません。 | |
| 空の Ink オブジェクトを GIF 形式で保存しようとした場合に発生します。 |
解説(Remarks)
空の InkDisp オブジェクトを GIF 形式で保存しようとすると、エラーが発生します。
指定したバイナリデータを使用して、新しい InkDisp オブジェクトにデータを設定します。
| Data | VARIANT | in | インクデータを含むストリームです。 VARIANT 構造体の詳細については、Using the COM Library を参照してください。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| VARIANT が正しい型 (バイト配列) ではありませんでした。 | |
| Stream 用のメモリを割り当てられません。 | |
| 予期しないパラメーターまたはプロパティの型です。 | |
|
メソッド内部で例外が発生しました。 |
解説(Remarks)
インクを読み込めるのは、新しく空の InkDisp オブジェクト (ストロークを一度も収集しておらず、プロパティも関連付けられていないもの) だけです。ストロークを収集済み、またはプロパティが関連付けられている InkDisp オブジェクトにインクを読み込もうとすると、たとえそのストロークやプロパティが InkDisp オブジェクトから削除済みであっても、例外がスローされます。これは、ストローク ID の割り当て方法によるものです。ストロークには一意の ID が割り当てられ、この ID は、そのストロークが Ink オブジェクトから削除された後でも再利用されません。つまり、InkDisp オブジェクトに ID が 1 のストロークが含まれていて、そのストロークを削除した後に別の InkDisp オブジェクトをこの InkDisp オブジェクトに読み込むと、ストローク ID は 2 から始まることになります。これは混乱を招くため、許可されていません。
パケットデータの入力値の配列から IInkStrokeDisp オブジェクトを作成します。
| PacketData | VARIANT | in | パケットデータの配列を指定します。データは Int32 値の配列であり、順に並べることで点の配列 (x0, y0)、(x1, y1) を構成します。この配列は Variant に格納してメソッドに渡します。 VARIANT 構造体の詳細については、Using the COM Library を参照してください。 |
| PacketDescription | VARIANT | in | 予約済みのパラメーターであり、現在は実装されていません。 |
| Stroke | IInkStrokeDisp** | out | このメソッドが返されるときに、新しく作成されたストロークへのポインターが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| VARIANT の型が無効です (VT_ARRAY | VT_I4 のみサポートされます)。 | |
|
メソッド内部で例外が発生しました。 |
| 新しいストロークを作成するためのメモリを割り当てられません。 |
解説(Remarks)
点の配列に含まれる各点の最小値と最大値は、それぞれ LONG_MIN と LONG_MAX です。ただし、これらの点が定義するインク空間の四角形は、幅または高さの最大値が LONG_MAX を超えることはできません。そのため、x 座標の最小値と最大値の差、および y 座標の最小値と最大値の差は、LONG_MAX を超えることはできません。
指定した四角形の内部に含まれる IInkStrokeDisp オブジェクトをクリップボードにコピーします。
| Rectangle | IInkRectangle* | inoptional | クリップボードにコピーするストロークを含む四角形を指定します。 |
| ClipboardFormats | InkClipboardFormats | in | 省略可能。InkDisp オブジェクトの InkClipboardFormats 列挙値を指定します。既定値は ICF_Default です。 |
| ClipboardModes | InkClipboardModes | in | 省略可能。InkDisp Class オブジェクトの InkClipboardModes Enumeration 値を指定します。既定値は ICB_Default です。 |
| DataObject | IDataObject** | out | このメソッドが返されるときに、新しく作成されたデータオブジェクトへのポインターが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
解説(Remarks)
四角形によってストロークがクリップされる場合、コピーされたデータ内でもそれらのストロークはクリップされます。
InkDisp オブジェクトのプロパティだけをコピーしたい場合は、InkDisp オブジェクトをクリップボードにコピーすると便利なことがあります。InkDisp オブジェクトをクリップボードにコピーするには、strokes パラメーターに NULL を設定して ClipboardCopy メソッドを呼び出します。
また、InkAdded イベントと InkDeleted イベントは、ストロークのインデックスに基づいて生成されます。たとえば、インデックス 0、1、3、5、6 のストロークを削除する場合、2 つのイベントが生成されます。1 つはインデックス 0、1、3 のストローク用、もう 1 つはインデックス 5 と 6 のストローク用です。つまり、連続する組ごとに 1 つのイベントが生成されます。
これは InkAdded イベントにも当てはまります。ストロークコレクション内で新しく追加されたストロークのインデックスは内部アルゴリズムによって決定され、これが上記のような InkAdded イベントの発生のしかたに影響します。
イベントハンドラー内でストロークの数を照会した場合、その結果は、まだイベントが生成されていないストロークも含めて、操作全体で追加されたストロークの総数になります。
InkStrokes コレクションをクリップボードにコピーします。
| strokes | IInkStrokes* | inoptional | 省略可能。コピーするストロークを指定します。strokes パラメーターが NULL の場合、ClipboardCopy メソッドは InkDisp オブジェクト全体をコピーします。既定値は NULL です。 |
| ClipboardFormats | InkClipboardFormats | in | 省略可能。InkDisp オブジェクトの InkClipboardFormats 列挙値を指定します。既定値は ICF_Default です。 |
| ClipboardModes | InkClipboardModes | in | 省略可能。InkDisp オブジェクトの InkClipboardModes 列挙値を指定します。既定値は ICB_Default です。 |
| DataObject | IDataObject** | out | このメソッドが返されるときに、新しく作成されたデータオブジェクトへのポインターが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
|
strokes パラメーターが別の Ink オブジェクトに関連付けられています。 |
解説(Remarks)
このメソッドは、認識結果を含むストロークのすべてのプロパティをコピーします。strokes パラメーターに NULL を設定すると、CustomStrokes プロパティを含む InkDisp オブジェクトがクリップボードにコピーされ、InkDisp オブジェクトの IInkCustomStrokes コレクション内のストロークの認識結果も保持されます。
空の InkStrokes コレクションが渡された場合、このメソッドは NULL を返し、クリップボードの内容は変更されません。
IDataObject を InkDisp オブジェクトに変換できるかどうかを示します。
| DataObject | IDataObject* | inoptional | 省略可能。検査する IDataObject を指定します。既定値は NULL で、この場合はクリップボード上のデータオブジェクトが使用されます。 |
| CanPaste | VARIANT_BOOL* | out | データオブジェクトを InkDisp オブジェクトに変換できる場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE です。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
解説(Remarks)
指定した IDataObject が NULL の場合は、クリップボード上のデータオブジェクトが使用されます。
クリップボードから IDataObject を InkDisp オブジェクトにコピーします。
| x | INT | in | 省略可能。貼り付け先の x 座標を インク空間 座標で指定します。既定値は 0 です。 |
| y | INT | in | 省略可能。貼り付け先の y 座標をインク空間座標で指定します。既定値は 0 です。 |
| DataObject | IDataObject* | inoptional | 省略可能。使用する IDataObject を指定します。クリップボードから貼り付ける場合は NULL を設定します。既定値は NULL です。 |
| Strokes | IInkStrokes** | out | このメソッドが返されるときに、InkDisp オブジェクト内の InkStrokes コレクションへのポインターが格納されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
解説(Remarks)
Clipboard へのアクセス中に予期しないエラーが発生した場合は、エラーが返されます。エラーが発生しなくても、クリップボードに インク として貼り付けられる形式 (ink serialized format (ISF) または text ink object (tInk)) が含まれていない場合は、NULL が返され、例外はスローされません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IInkDisp "{9D398FA0-C4E2-4FCD-9973-975CAAF47EA6}" #usecom global IInkDisp IID_IInkDisp "{937C1A34-151D-4610-9CA6-A8CC9BDB5D83}" #comfunc global IInkDisp_get_Strokes 7 sptr #comfunc global IInkDisp_get_ExtendedProperties 8 sptr #comfunc global IInkDisp_get_Dirty 9 var #comfunc global IInkDisp_put_Dirty 10 int #comfunc global IInkDisp_get_CustomStrokes 11 sptr #comfunc global IInkDisp_GetBoundingBox 12 int,sptr #comfunc global IInkDisp_DeleteStrokes 13 sptr #comfunc global IInkDisp_DeleteStroke 14 sptr #comfunc global IInkDisp_ExtractStrokes 15 sptr,int,sptr #comfunc global IInkDisp_ExtractWithRectangle 16 sptr,int,sptr #comfunc global IInkDisp_Clip 17 sptr #comfunc global IInkDisp_Clone 18 sptr #comfunc global IInkDisp_HitTestCircle 19 int,int,float,sptr #comfunc global IInkDisp_HitTestWithRectangle 20 sptr,float,sptr #comfunc global IInkDisp_HitTestWithLasso 21 int,float,var,sptr #comfunc global IInkDisp_NearestPoint 22 int,int,var,var,sptr #comfunc global IInkDisp_CreateStrokes 23 int,sptr #comfunc global IInkDisp_AddStrokesAtRectangle 24 sptr,sptr #comfunc global IInkDisp_Save 25 int,int,var #comfunc global IInkDisp_Load 26 int #comfunc global IInkDisp_CreateStroke 27 int,int,sptr #comfunc global IInkDisp_ClipboardCopyWithRectangle 28 sptr,int,int,sptr #comfunc global IInkDisp_ClipboardCopy 29 sptr,int,int,sptr #comfunc global IInkDisp_CanPaste 30 sptr,var #comfunc global IInkDisp_ClipboardPaste 31 int,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IInkDisp "{9D398FA0-C4E2-4FCD-9973-975CAAF47EA6}" #usecom global IInkDisp IID_IInkDisp "{937C1A34-151D-4610-9CA6-A8CC9BDB5D83}" #comfunc global IInkDisp_get_Strokes 7 sptr #comfunc global IInkDisp_get_ExtendedProperties 8 sptr #comfunc global IInkDisp_get_Dirty 9 sptr #comfunc global IInkDisp_put_Dirty 10 int #comfunc global IInkDisp_get_CustomStrokes 11 sptr #comfunc global IInkDisp_GetBoundingBox 12 int,sptr #comfunc global IInkDisp_DeleteStrokes 13 sptr #comfunc global IInkDisp_DeleteStroke 14 sptr #comfunc global IInkDisp_ExtractStrokes 15 sptr,int,sptr #comfunc global IInkDisp_ExtractWithRectangle 16 sptr,int,sptr #comfunc global IInkDisp_Clip 17 sptr #comfunc global IInkDisp_Clone 18 sptr #comfunc global IInkDisp_HitTestCircle 19 int,int,float,sptr #comfunc global IInkDisp_HitTestWithRectangle 20 sptr,float,sptr #comfunc global IInkDisp_HitTestWithLasso 21 int,float,sptr,sptr #comfunc global IInkDisp_NearestPoint 22 int,int,sptr,sptr,sptr #comfunc global IInkDisp_CreateStrokes 23 int,sptr #comfunc global IInkDisp_AddStrokesAtRectangle 24 sptr,sptr #comfunc global IInkDisp_Save 25 int,int,sptr #comfunc global IInkDisp_Load 26 int #comfunc global IInkDisp_CreateStroke 27 int,int,sptr #comfunc global IInkDisp_ClipboardCopyWithRectangle 28 sptr,int,int,sptr #comfunc global IInkDisp_ClipboardCopy 29 sptr,int,int,sptr #comfunc global IInkDisp_CanPaste 30 sptr,sptr #comfunc global IInkDisp_ClipboardPaste 31 int,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。