IInkRecognizer
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
インク(手書き)を処理し、ストロークをテキストまたはジェスチャに変換する機能を表します。認識エンジンは InkRecognizerContext オブジェクトを作成し、そのオブジェクトを使用して実際の手書き認識を実行します。
解説(Remarks)
認識エンジンには、認識を実行するための固有の属性とプロパティがあります。認識を行う前に、認識エンジンのプロパティを確認しておく必要があります。認識エンジンがサポートするプロパティの種類によって、実行できる認識の種類が決まります。たとえば、認識エンジンが筆記体の手書きをサポートしていない場合、ユーザーが筆記体で書くと不正確な結果が返されます。
また、認識エンジンには、手書きに関する多くの側面を自動的に管理する組み込み機能もあります。たとえば、ストロークが描画される行のメトリックを判断します。ストロークの行番号を取得することはできますが、認識エンジンの組み込み機能によって処理されるため、それらの行メトリックの判断方法を指定する必要はありません。
認識の詳細については、About Handwriting Recognition を参照してください。
このインターフェイスを実装するクラスを独自に定義した場合、その新しいクラスは Tablet PC アプリケーション プログラミング インターフェイス (API) と正しく連携しません。
メソッド 7
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
オブジェクトの名前を取得します。(IInkRecognizer.get_Name)
| Name | LPWSTR* | out | 認識エンジンの名前を文字列で受け取るポインタである。 |
解説(Remarks)
特定のメッセージ ハンドラー内でこのプロパティにアクセスすると、基になる関数が再入され、予期しない結果を招くことがあります。次のメッセージを処理する際は、再入呼び出しが発生しないよう注意してください。WM_ACTIVATE、WM_ACTIVATEAPP、WM_NCACTIVATE、WM_PAINT、wParam に SC_HOTKEY または SC_TASKLIST が設定されている場合の WM_SYSCOMMAND、および WM_SYSKEYDOWN (Alt + Tab または Alt + Esc のキーの組み合わせを処理する場合)。これはシングルスレッド アパートメント モデルのアプリケーションで発生する問題です。
IInkRecognizer オブジェクトのベンダー名を取得します。
| Vendor | LPWSTR* | out | 認識エンジンのベンダー名を文字列で受け取るポインタである。 |
IInkRecognizer オブジェクトの機能を取得します。
| CapabilitiesFlags | InkRecognizerCapabilities* | out | 認識エンジンの機能を示すフラグを受け取る InkRecognizerCapabilities へのポインタである。 |
解説(Remarks)
認識エンジンの機能は InkRecognizerCapabilities 列挙型で定義されており、認識エンジンが文字のオートコンプリートをサポートするかどうか、自由入力・罫線付き入力・枠付き入力をサポートするかどうかなどが含まれます。認識エンジンの機能の一覧については、InkRecognizerCapabilities 列挙型を参照してください。
認識エンジンが特定の機能を備えているかどうかを判断するには、ビットごとの比較演算子を使用してその機能を確認します。
さまざまな認識エンジンの機能 (モード) を要求する方法については、RecognizerContext オブジェクトの Guide プロパティを参照してください。
IInkRecognizer オブジェクトがサポートする言語の言語識別子の配列を取得します。
| Languages | VARIANT* | out | 認識エンジンが対応する言語(LCID)の配列を受け取る VARIANT へのポインタである。 |
解説(Remarks)
このプロパティは、特定の言語をサポートする IInkRecognizer を InkRecognizers コレクションから検索するために使用できます。
Microsoft のジェスチャ認識エンジンの場合、このプロパティは空の配列を返します。
IInkRecognizer オブジェクトがサポートするプロパティを表すグローバル一意識別子 (GUID) の配列を取得します。
| SupportedProperties | VARIANT* | out | 認識エンジンがサポートするプロパティの GUID 配列を受け取る VARIANT へのポインタである。 |
解説(Remarks)
認識エンジンは、行メトリック、行番号、信頼度レベルなどをサポートする場合があります。認識エンジンがサポートする可能性のあるプロパティの一覧については、RecognitionProperty オブジェクトを参照してください。
認識エンジンが優先するパケット プロパティを表すグローバル一意識別子 (GUID) の配列を取得します。
| PreferredPacketDescription | VARIANT* | out | 認識エンジンが推奨するパケット記述(プロパティ GUID 配列)を受け取る VARIANT へのポインタである。 |
解説(Remarks)
このプロパティはパケットの内容を示すものであり、パケットに含まれるデータへのアクセスを提供するものではありません。
このプロパティは、認識エンジンが認識を完了するために使用するパケット プロパティを列挙します。すべての Microsoft 製認識エンジンにおいて、PreferredPacketDescription プロパティは IInkStrokeDisp オブジェクト内の (x, y) 座標を表すデータを指します。このデータは、パケット プロパティ定数の X フィールドおよび Y フィールドで表されます。パケットには、この点のデータに加えて、ストロークを描いたペンの筆圧やペンの傾きなど、そのストロークに関連するその他のデータも含まれます。Microsoft 製の認識エンジンは、筆圧、傾き、およびその他のパケット プロパティを無視します。
新しい InkRecognizerContext オブジェクトを作成します。
| Context | IInkRecognizerContext** | out | 呼び出し元の IInkRecognizer に対する InkRecognizerContext を返します。 |
戻り値
このメソッドは次の値のいずれかを返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
|
メソッド内部で例外が発生しました。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IInkRecognizer "{782BF7CF-034B-4396-8A32-3A1833CF6B56}" #usecom global IInkRecognizer IID_IInkRecognizer "{}" #comfunc global IInkRecognizer_get_Name 7 var #comfunc global IInkRecognizer_get_Vendor 8 var #comfunc global IInkRecognizer_get_Capabilities 9 var #comfunc global IInkRecognizer_get_Languages 10 var #comfunc global IInkRecognizer_get_SupportedProperties 11 var #comfunc global IInkRecognizer_get_PreferredPacketDescription 12 var #comfunc global IInkRecognizer_CreateRecognizerContext 13 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IInkRecognizer "{782BF7CF-034B-4396-8A32-3A1833CF6B56}" #usecom global IInkRecognizer IID_IInkRecognizer "{}" #comfunc global IInkRecognizer_get_Name 7 sptr #comfunc global IInkRecognizer_get_Vendor 8 sptr #comfunc global IInkRecognizer_get_Capabilities 9 sptr #comfunc global IInkRecognizer_get_Languages 10 sptr #comfunc global IInkRecognizer_get_SupportedProperties 11 sptr #comfunc global IInkRecognizer_get_PreferredPacketDescription 12 sptr #comfunc global IInkRecognizer_CreateRecognizerContext 13 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。