sInk オブジェクトと tInk オブジェクト
アプリケーションでのインクのサポートを支援するために、2 つのオブジェクトがあり、どちらも埋め込み可能で、任意の OLE コンテナーでサポートされています。 これらは、Ink.ClipboardCopy メソッド (Rectangle、InkClipboardFormats、InkClipboardModes) または Ink.ClipboardCopy メソッド (Strokes、InkClipboardFormats、InkClipboardModes) メソッドを呼び出すことによって生成されます。
- テキスト インク オブジェクト (tInk)。 これは、単語を形成することが期待されるインクを表す OLE オブジェクトです。 tInk オブジェクトを使用すると、認識エンジンによって返されるテキストとして、または認識代替のリストから選択されたテキストとして、手書きのインクをテキストに変換できます。 インクの色とサイズはプログラムで設定でき、オブジェクトの周囲のテキストの属性に基づいて設定できます。 tInk オブジェクトは、1 つの単語を含むように意図されています。tInk オブジェクトは、レンダリング (デバイス コンテキスト (HDC) と RECT へのハンドルの指定)、それ自体の永続化 (ストリームの指定) などの単純な操作を実行できる、小型で軽量なオブジェクトです。 tInk オブジェクトを使用すると、手書きとテキストの両方の入力を使用するアプリケーションで作業するときのシームレスなユーザー エクスペリエンスが可能になります。
- インク オブジェクト (sInk) をスケッチします。 これは、単語を形成することが想定されていないインクを表す OLE オブジェクトです。 sInk オブジェクトは図面として解釈されます。 sInk オブジェクトは、複数の単語を表す場合にも便利です。
これらのオブジェクトは、クリップボードの OLE オブジェクト スロットに配置するか、リッチ テキスト形式 (RTF) で埋め込むことで、アプリケーション間の相互運用性に使用できます。
tInk オブジェクトと sInk オブジェクトは、次の方法で使用できます。
- tInk オブジェクトと sInk オブジェクトはどちらも、Microsoft Word 2002 でサポートされています。 ユーザーは、Word 2002 で提供されているテキスト入力パネルの作成と描画を使用して、Word 文書にインクを挿入できます。 このインクは、sInk オブジェクトまたは tInk オブジェクトの CLSID を持つ OLE オブジェクトとして Word ファイルに埋め込まれます。
- Tablet PC InkEdit コントロールは、tInk オブジェクトを使用します。 InkEdit コントロールは、標準の RichTextBox コントロールのサブクラスです。 Ink は、InkEdit コントロールの RTF ストリームに tInk オブジェクトとして挿入されます。
- アプリケーションが選択した Ink オブジェクトをクリップボードに移動すると、OLE オブジェクトクリップボード スロットに tInk または sInk OLE オブジェクトが含まれます。
たとえば、アプリケーションは手書きを認識し、Ink オブジェクトを tInk オブジェクトとしてマークできます。 次に、インクで単語を選択し、Word にコピーして貼り付けると、その単語の代替候補が Word 2002 に表示されます。
手記
タブレット PC プラットフォームのクリップボードサポートでは、クリップボードに sInk または tInk オブジェクトを OLE オブジェクトとして配置すると、拡張メタファイル (EMF) フラグが自動的に選択されます。 オブジェクト自体は、埋め込みソースおよびオブジェクト記述子スロットのクリップボードに格納されます。
別の例として、sInk オブジェクトを使用すると、アプリケーションでインク スケッチを描画し、そのスケッチをコピーして Word 2002 に貼り付け、Word のタブレット PC 入力パネルを使用して図面を編集できます。
tInk オブジェクトを正常に格納するには、アプリケーションで埋め込みオブジェクトに対する OLE コンテナーのサポートを実装する必要があります。 次に、コンテナーが tInk を完全にサポートできるようにするには、次の設定を行う必要があります。
- 検索と置換のコードの変更。 検索で埋め込みオブジェクトをスキップする代わりに、これらのオブジェクトを型について尋問する必要があります。 tInk オブジェクトの場合は、対応するテキストをインスタンス化してクエリを実行する必要があります。
- 選択動作の変更。 サイズ変更ハンドルを使用して tInk オブジェクトを選択しないでください。 これらは、文書内でテキストを選択するのと同じ方法で選択する必要があります。 オブジェクトの選択コードは、型が tInk であるかどうかを検出し、選択内容を適切に表示する必要があります。
- アンビエント プロパティの使用。 フォント サイズ、色、太字の書式設定などのアンビエント プロパティを tInk オブジェクトに送信する必要があります。 これらのプロパティを適用すると、手書きのインクの幅が変更されるため、GetInkExtent メソッド または IOleObject::GetExtent メソッド 呼び出すことによってサイズの更新が必要になります。
- IOleObject::D oVerb メソッドの既定 処理をオーバーライドします。 これにより、テキストに変換して tInk オブジェクトのバッチを認識エンジンに渡すことができます。これにより、単語を認識セグメントに分割できます。
単語を認識セグメントに分割する方法の詳細については、「認識セグメントの」を参照してください。