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

IInkRecognizer

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID782bf7cf-034b-4396-8a32-3a1833cf6b56継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

インク(手書き)を処理し、ストロークをテキストまたはジェスチャに変換する機能を表します。認識エンジンは InkRecognizerContext オブジェクトを作成し、そのオブジェクトを使用して実際の手書き認識を実行します。

解説(Remarks)

認識エンジンには、認識を実行するための固有の属性とプロパティがあります。認識を行う前に、認識エンジンのプロパティを確認しておく必要があります。認識エンジンがサポートするプロパティの種類によって、実行できる認識の種類が決まります。たとえば、認識エンジンが筆記体の手書きをサポートしていない場合、ユーザーが筆記体で書くと不正確な結果が返されます。

また、認識エンジンには、手書きに関する多くの側面を自動的に管理する組み込み機能もあります。たとえば、ストロークが描画される行のメトリックを判断します。ストロークの行番号を取得することはできますが、認識エンジンの組み込み機能によって処理されるため、それらの行メトリックの判断方法を指定する必要はありません。

認識の詳細については、About Handwriting Recognition を参照してください。

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

メソッド 7

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

vtbl 7 HRESULT get_Name(LPWSTR* Name)

オブジェクトの名前を取得します。(IInkRecognizer.get_Name)

NameLPWSTR*out認識エンジンの名前を文字列で受け取るポインタである。

解説(Remarks)

特定のメッセージ ハンドラー内でこのプロパティにアクセスすると、基になる関数が再入され、予期しない結果を招くことがあります。次のメッセージを処理する際は、再入呼び出しが発生しないよう注意してください。WM_ACTIVATEWM_ACTIVATEAPPWM_NCACTIVATEWM_PAINTwParamSC_HOTKEY または SC_TASKLIST が設定されている場合の WM_SYSCOMMAND、および WM_SYSKEYDOWN (Alt + Tab または Alt + Esc のキーの組み合わせを処理する場合)。これはシングルスレッド アパートメント モデルのアプリケーションで発生する問題です。

vtbl 8 HRESULT get_Vendor(LPWSTR* Vendor)

IInkRecognizer オブジェクトのベンダー名を取得します。

VendorLPWSTR*out認識エンジンのベンダー名を文字列で受け取るポインタである。
vtbl 9 HRESULT get_Capabilities(InkRecognizerCapabilities* CapabilitiesFlags)

IInkRecognizer オブジェクトの機能を取得します。

CapabilitiesFlagsInkRecognizerCapabilities*out認識エンジンの機能を示すフラグを受け取る InkRecognizerCapabilities へのポインタである。

解説(Remarks)

認識エンジンの機能は InkRecognizerCapabilities 列挙型で定義されており、認識エンジンが文字のオートコンプリートをサポートするかどうか、自由入力・罫線付き入力・枠付き入力をサポートするかどうかなどが含まれます。認識エンジンの機能の一覧については、InkRecognizerCapabilities 列挙型を参照してください。

認識エンジンが特定の機能を備えているかどうかを判断するには、ビットごとの比較演算子を使用してその機能を確認します。

さまざまな認識エンジンの機能 (モード) を要求する方法については、RecognizerContext オブジェクトの Guide プロパティを参照してください。

vtbl 10 HRESULT get_Languages(VARIANT* Languages)

IInkRecognizer オブジェクトがサポートする言語の言語識別子の配列を取得します。

LanguagesVARIANT*out認識エンジンが対応する言語(LCID)の配列を受け取る VARIANT へのポインタである。

解説(Remarks)

このプロパティは、特定の言語をサポートする IInkRecognizerInkRecognizers コレクションから検索するために使用できます。

Microsoft のジェスチャ認識エンジンの場合、このプロパティは空の配列を返します。

vtbl 11 HRESULT get_SupportedProperties(VARIANT* SupportedProperties)

IInkRecognizer オブジェクトがサポートするプロパティを表すグローバル一意識別子 (GUID) の配列を取得します。

SupportedPropertiesVARIANT*out認識エンジンがサポートするプロパティの GUID 配列を受け取る VARIANT へのポインタである。

解説(Remarks)

認識エンジンは、行メトリック、行番号、信頼度レベルなどをサポートする場合があります。認識エンジンがサポートする可能性のあるプロパティの一覧については、RecognitionProperty オブジェクトを参照してください。

vtbl 12 HRESULT get_PreferredPacketDescription(VARIANT* PreferredPacketDescription)

認識エンジンが優先するパケット プロパティを表すグローバル一意識別子 (GUID) の配列を取得します。

PreferredPacketDescriptionVARIANT*out認識エンジンが推奨するパケット記述(プロパティ GUID 配列)を受け取る VARIANT へのポインタである。

解説(Remarks)

このプロパティはパケットの内容を示すものであり、パケットに含まれるデータへのアクセスを提供するものではありません。

このプロパティは、認識エンジンが認識を完了するために使用するパケット プロパティを列挙します。すべての Microsoft 製認識エンジンにおいて、PreferredPacketDescription プロパティは IInkStrokeDisp オブジェクト内の (x, y) 座標を表すデータを指します。このデータは、パケット プロパティ定数の X フィールドおよび Y フィールドで表されます。パケットには、この点のデータに加えて、ストロークを描いたペンの筆圧やペンの傾きなど、そのストロークに関連するその他のデータも含まれます。Microsoft 製の認識エンジンは、筆圧、傾き、およびその他のパケット プロパティを無視します。

vtbl 13 HRESULT CreateRecognizerContext(IInkRecognizerContext** Context)

新しい InkRecognizerContext オブジェクトを作成します。

ContextIInkRecognizerContext**out呼び出し元の IInkRecognizer に対する InkRecognizerContext を返します。

戻り値

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

戻り値 説明
S_OK
成功しました。
E_POINTER
パラメーターに無効なポインターが含まれていました。
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_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 不要)。