Win32 API 日本語リファレンス
ホームUI.TabletPC › IInkCustomStrokes

IInkCustomStrokes

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID7e23a88f-c30e-420f-9bdb-28902543f0c1継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

ユーザー定義の InkStrokes コレクションの集合を保持します。

解説(Remarks)

カスタムストロークとは、実質的に名前付きの InkStrokes コレクションであり、永続化して後から呼び出すことができます。

カスタムストロークのコレクションは、同じ意味を持つストロークや、何らかの関連があるストロークをまとめて格納するために使用します。永続化したいストロークの例を次に示します。

たとえば、2 つの異なるカーソルで描画し、それぞれのカーソルで描画したストロークの集合を分けて保持したいとします。この場合、最初のカーソルで描画したストロークを認識し、そのストロークのコレクションに IInkRecognitionResult オブジェクトを関連付けることができます。認識結果を永続化するには、それらのストロークを InkDisp オブジェクトの CustomStrokes コレクションに追加します。後から InkDisp オブジェクトの永続化された CustomStrokes コレクションを取得することで、最初のストロークのコレクションにアクセスできます。

IInkCustomStrokes コレクションは名前によって参照されます。

IInkCustomStrokes コレクションは、インクデータそのものではなく、インクデータへの参照です。

COM におけるコレクションの詳細については、「COM ライブラリの使用」を参照してください。

このインターフェイスを実装するクラスを独自に定義した場合、その新しいクラスは Tablet PC アプリケーション プログラミング インターフェイス (API) と正しく連携しません。

メソッド 6

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_Count(INT* Count)

コレクションに含まれるオブジェクトまたはコレクションの数を取得します。(IInkCustomStrokes.get_Count)

CountINT*outコレクションに含まれる名前付きストローク集合の個数を受け取るポインタである。
vtbl 8 HRESULT get__NewEnum(IUnknown** _NewEnum)
_NewEnumIUnknown**outコレクションを反復処理するための列挙子 (IEnumVARIANT) を受け取る IUnknown ポインタである。
vtbl 9 HRESULT Item(VARIANT Identifier, IInkStrokes** Strokes)

IInkCustomStrokes インターフェイス内の指定した位置にある InkStrokes コレクションを取得します。

IdentifierVARIANTinIInkCustomStrokes コレクションから返す InkStrokes コレクションの数値インデックスまたは文字列名。
StrokesIInkStrokes**outこのメソッドが返されるとき、IInkCustomStrokes インターフェイス内の指定した位置にある InkStrokes コレクションへのポインターが格納されます。

戻り値

このメソッドは次のいずれかの値を返します。

HRESULT の値 説明
S_OK
成功しました。
E_POINTER
パラメーターに無効なポインターが含まれています。
E_FAIL
不明なエラーが発生しました。
CO_E_CLASSTRING
GUID の形式が無効です。
DISP_E_TYPEMISMATCH
パラメーターのいずれかが有効な VARIANT 型ではありません。
E_INVALIDARG
引数が無効です。
E_UNEXPECTED
予期しないパラメーターまたはプロパティの型です。
REGDB_CLASSNOTREG
OBJECT 型が登録されていません。
E_OUTOFMEMORY
操作を完了するためのメモリを割り当てられません。
E_INK_EXCEPTION
メソッド内部で例外が発生しました。
TPC_E_RECOGNIZER_NOT_REGISTERED
認識エンジンのレジストリキーが破損しているか、使用している環境が手書き認識をサポートしていません。

解説(Remarks)

識別子がコレクション内の既存のメンバーのいずれとも一致しない場合はエラーになります。

このメソッドは VARIANT 型の入力引数を受け取ります。この変数のサブタイプは BSTR または Long である必要があります。

vtbl 10 HRESULT Add(LPWSTR Name, IInkStrokes* Strokes)

InkStrokes コレクションを IInkCustomStrokes コレクションに追加します。

NameLPWSTRin

IInkCustomStrokes コレクションに追加する InkStrokes コレクションの名前を指定します。

BSTR データ型の詳細については、「COM ライブラリの使用」を参照してください。

StrokesIInkStrokes*inoptionalIInkCustomStrokes コレクションに追加する InkStrokes コレクションを指定します。

戻り値

このメソッドは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
項目が既にコレクション内に存在するか、パラメーターに無効なポインターが含まれています。
E_OUTOFMEMORY
操作を完了するためのメモリを割り当てられません。
E_INK_EXCEPTION
メソッド内部で例外が発生しました。
E_INK_INCOMPATIBLE_OBJECT
ストロークのコレクションが API と互換性がありません。
E_INK_MISMATCHED_INK_OBJECT
strokes パラメーターが別の INK オブジェクトに関連付けられています。
E_FAIL
不明なエラーが発生しました。
vtbl 11 HRESULT Remove(VARIANT Identifier)

InkStrokes コレクションを IInkCustomStrokes コレクションから削除します。

IdentifierVARIANTin

カスタムストロークのコレクションから削除する、ストロークのコレクションの名前またはインデックス。

VARIANT 構造体の詳細については、「COM ライブラリの使用」を参照してください。

戻り値

このメソッドは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
E_POINTER
パラメーターに無効なポインターが含まれています。
E_OUTOFMEMORY
操作を完了するためのメモリを割り当てられません。
E_INK_EXCEPTION
メソッド内部で例外が発生しました。
E_INK_INCOMPATIBLE_OBJECT
入力パラメーターが無効です。
E_INK_MISMATCHED_INK_OBJECT
InkStrokes コレクションの InkDisp オブジェクトと IInkStrokeDisp オブジェクトが一致しません。
E_FAIL
不明なエラーが発生しました。
DISP_E_TYPEMISMATCH
無効な variant が渡されました。

解説(Remarks)

IInkCustomStrokes コレクションは、インクデータへの参照の集合であり、データそのものではありません。このメソッドは、データのスナップショット (参照) からストロークのコレクションを削除するだけで、実際のインクデータは削除しません。実際のインクデータからコレクションを削除するには、InkDisp オブジェクトの DeleteStrokes メソッドを呼び出します。

Identifier パラメーターには BSTR または LONG のいずれかを指定できます。コレクションに追加したときにカスタムストロークに付けた名前を指定する場合は BSTR を、コレクション内のカスタムストロークのインデックスを指定する場合は long を使用します。スクリプト言語を使用する場合など、遅延バインディングでカスタムストロークの名前を指定するときは、変数ではなく文字列リテラルとして引数を渡す必要があります。

BSTR データ型の詳細については、「COM ライブラリの使用」を参照してください。

vtbl 12 HRESULT Clear()

IInkCustomStrokes コレクションからすべての InkStrokes コレクションをクリアします。

戻り値

このメソッドは次のいずれかの値を返します。

戻り値 説明
S_OK
成功しました。
E_FAIL
不明なエラーが発生しました。
E_INK_EXCEPTION
メソッド内部で例外が発生しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IInkCustomStrokes "{7E23A88F-C30E-420F-9BDB-28902543F0C1}"
#usecom global IInkCustomStrokes IID_IInkCustomStrokes "{}"
#comfunc global IInkCustomStrokes_get_Count     7 var
#comfunc global IInkCustomStrokes_get__NewEnum  8 sptr
#comfunc global IInkCustomStrokes_Item          9 int,sptr
#comfunc global IInkCustomStrokes_Add           10 wstr,sptr
#comfunc global IInkCustomStrokes_Remove        11 int
#comfunc global IInkCustomStrokes_Clear         12
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。