PenInputPanel のユーザー向け TextInputPanel
Windows Vista のリリースには、タブレット PC 入力パネル用の新しいプログラミング オブジェクトが含まれています。これは、アプリケーションが入力パネルを使用して操作する方法の新しい範囲を提供します。 アプリケーション開発者は初めて、In-Place入力パネル アイコンを配置してテキスト ボックスに合わせて配置するか、顧客の手描き入力画面の隅に配置して、代替入力モードへのアクセスを提供できます。 入力パネル アイコンを In-Place 入力パネルに展開すると、開発者は配置を同じように制御できます。 これにより、In-Place入力パネルがアプリケーションのレイアウト内の主要なユーザー インターフェイス要素と重ならないようにしたり、アプリケーションのユーザー インターフェイスをリフローしてIn-Place入力パネルの領域を作成し、予約済み領域に配置したりすることが可能になります。 新しいプログラミング モデルには、配置だけでなく、開発者は入力領域、修正モード、および入力パネルの他の多くのプロパティをカスタマイズして、アプリケーションでテキスト入力エクスペリエンスを調整することもできます。 最後に、アプリケーションが認識されたテキストに加えて、入力パネルからのテキスト挿入に関連付けられたユーザー インクを初めて受け取ることができます。 これにより、変更追跡ログにインクを含む新しいアプリケーション シナリオが可能になり、ユーザーはアプリケーションでインクを編集または表示できるようになります。 これらの新しいプログラミング機能は、Microsoft が入力パネル開発者のストーリーについて受け取ったフィードバックの直接の結果であり、アプリケーションと入力パネルの緊密な統合に向けた最初のステップを表します。
このエンリッチされた入力パネルプログラミング モデルを提供するために、プログラムによって入力パネルと対話するための既存のメカニズムである PenInputPanel オブジェクトは非推奨になり、新しい TextInputPanel オブジェクトに置き換えられます。 TextInputPanel オブジェクトは、新しいプログラミング機能を提供するだけでなく、PenInputPanel オブジェクトのすべてのプログラム機能にも近い機能を提供します。 TextInputPanel オブジェクトは、Windows Vista と Windows Vista ソフトウェア開発者キットの両方に含まれています。 TextInputPanel オブジェクトは Windows Vista 入力パネルとのみ互換性があり、Windows XP Service Pack 2 以前の入力パネルでは使用できません。 PenInputPanel オブジェクトを使用するように以前に作成されたアプリケーションは引き続き Windows Vista 入力パネルで動作しますが、新しいタブレット アプリケーションを作成する場合、開発者は非推奨の PenInputPanel オブジェクトではなく新しい TextInputPanel オブジェクトを使用することを強くお勧めします。
TextInputPanel オブジェクトのプログラミング オプションはそれぞれ、テキスト フィールドごとに適用できます。 これを行うには、AttachedEditWindow プロパティを使用して TextInputPanel オブジェクトのインスタンスをアタッチします。 プロパティは、テキスト フィールドのウィンドウ ハンドルに設定する必要があります。
Note
: 入力パネルがインプレース対話モードであり、入力パネルがフローティングまたはドッキング対話モードの場合には適用されない場合は、以下に説明するいくつかのプロパティとメソッドが適用されます。 インプレース対話モードは、編集可能なフィールドにフォーカスを配置すると、フィールドの横に入力パネル アイコンが表示され、[入力パネル] アイコンをタップすると入力パネルが展開される入力パネルの動作です。 入力パネルがインプレース対話モードの場合にのみ適用されるメソッドとプロパティには、メソッド名またはプロパティ名に 'InPlace' が含まれています。
入力パネル アイコンと入力パネルの表示の制御
Windows Vista でアプリケーション開発者がより制御できる入力パネルの最初の側面は、その可視性です。 TextInputPanel オブジェクトを使用すると、In-Place入力パネルの表示を 3 つの方法で制御できます。 プロパティとメソッドの組み合わせにより、アプリケーションは、In-Place入力パネルが表示されるかどうか、In-Place入力パネルが表示されるタイミング、および入力パネル アイコンとして最初に表示されるか、またはすぐに展開された状態で表示されるかを判断できます。 可視性を制御するためのこれらの手法と、次のセクションで説明する配置を制御する手法を組み合わせることで、アプリケーション開発者は、アプリケーションの In-Place入力パネルを使用してカスタム起動ポイントとカスタム ワーク フローを作成できます。
Note
このセクションで説明するプロパティとメソッドは、入力パネルがIn-Place対話モードの場合にのみ適用されます。
まず、最も基本的には、 InPlaceVisibleOnFocus プロパティを false に設定することで、In-Place入力パネルと入力パネル アイコンが表示されないようにすることができます。 これを true に設定すると、ユーザーまたはグループ ポリシーによって無効になっていない場合は、可能な限りシステムの既定値の 表示に戻ります。 このオプションは、入力パネルの代わりにカスタム テキスト入力ソリューションを含むアプリケーションに役立ちます。
次に、 DefaultInPlaceState プロパティを設定することで、開発者は InPlaceState 列挙で指定されたインプレース状態を指定できます。フォーカスがテキスト フィールドに配置されると、In-Place入力パネルが表示されます。 システムの既定値は、入力パネルが展開された状態で既に表示されていない限り、In-Place入力パネルがホバー状態で表示されます。その場合、入力パネルは展開されたままです。 DefaultInPlaceState プロパティを InPlaceState_Expanded に設定すると、入力パネルアイコンが最初に表示され、入力パネルが展開される前にユーザーに入力パネル アイコンをタップするように求められるのではなく、In-Place入力パネルが常に展開されます。 他の 2 つのオプションは 、システムの既定の動作である InPlaceState_Autoと、 入力パネル アイコンが常に表示されるInPlaceState_HoverTargetです。 In-Place入力パネルが常に展開されるように指定する機能は 、TextInputPanel オブジェクトでは新しく、 PenInputPanel オブジェクトを使用することはできません。 次の図は、In-Place入力パネル アイコンと、パネルの展開された状態を示しています。
インプレース状態を制御できることに加えて、開発者は CurrentInPlaceState プロパティを取得することで、特定の時点でインプレース状態を判断することもできます。 CurrentInPlaceState は、入力パネルが表示されない場合は DefaultInPlaceState と同じですが、DefaultInPlaceState がInPlaceState_Auto場合を除き、CurrentInPlaceState はInPlaceState_HoverTargetになります。 InPlaceVisibilityChanging / InPlaceVisibilityChanged イベントを使用すると、In-Place入力パネルの可視性の状態を追跡できます。
最後に、開発者は SetInPlaceVisibility メソッドを使用して、In-Place入力パネルを強制的に非表示または表示できます。 開発者が DefaultInPlaceState プロパティを以前に設定している場合、入力パネルは表示を強制されたときに指定された状態で表示されます。 アプリケーションは、 TextInputPanel オブジェクトがアタッチされているウィンドウにフォーカスが現在ある場合、およびユーザーが別の対話モード (ドッキングまたはフローティングなど) で入力パネルを開いたままでない場合にのみ、In-Place入力パネルを非表示または表示できます。 In-Place入力パネルを強制的に非表示または表示する機能も TextInputPanel オブジェクトでは新しく、 PenInputPanel オブジェクトを使用することはできません。
これらのオプションを使用すると、アプリケーション開発者は、In-Place入力パネルが表示されるタイミングと状態をきめ細かく制御できます。 既定のインプレース状態をカスタマイズし、フォーカスに依存しないインプレース可視性を制御することで、アプリケーション開発者は、入力パネルがアプリケーションの設定またはアプリケーションへのユーザー入力に応答したときにカスタム ワーク フローを作成できます。
入力パネルアイコンと入力パネルの絶対配置
TextInputPanel オブジェクトで最も魅力的な新機能は、In-Place入力パネルの絶対配置である可能性があります。 この新機能を使用すると、アプリケーション開発者は、In-Place入力パネルがアプリケーション レイアウト内の 1 つ以上の主要なビジュアル要素と重複しないようにすることができます。 PenInputPanel オブジェクトを使用すると、オフセットに基づいてテキスト フィールドに対してIn-Place入力パネルを相対的に配置できますが、入力パネルは画面に表示されるように調整されます。 Vista で初めてアプリケーションは、画面座標を使用して、In-Place入力パネルを絶対位置に配置できます。 さらに、画面に入力パネルを保持する責任は、アプリケーション開発者に任されているため、入力パネルが自動的に、そして一見ランダムに再配置される可能性を取り除きます。
Note
このセクションで説明するプロパティとメソッドは、入力パネルがIn-Place対話モードの場合にのみ適用されます。
In-Place入力パネルを絶対に配置するために必要な 2 つの主な方法は 、SetInPlacePosition と SetInPlaceHoverTargetPosition です。 1 つ目はIn-Place入力パネルの場所を指定するために使用され、2 つ目は In-Place入力パネルの入力パネル アイコンの場所を指定するために使用されます。 アプリケーションで入力パネル アイコンの場所のみを設定し、In-Place入力パネルの場所を設定しない場合は、システムによって決定される既定の場所にIn-Place入力パネルが表示されます。 同様に、アプリケーションが入力パネルアイコンではなくIn-Place入力パネルの位置を変更すると、入力パネル アイコンが既定の場所に表示されます。 位置は画面座標で指定します。 配置されている実際のポイントは、[入力パネル] アイコンまたは [入力パネル] の左上隅で、補正コームが展開されていません。 補正コームを展開しても、位置が変わりません。 (下の図 2 を参照)In-Place入力パネルとIn-Place入力パネル アイコンを配置できる場所に制限はありません。また、これらのメソッドを呼び出すアプリケーションが画面に表示されるようにする必要があります。 どちらのメソッドも同期的です。つまり、配置はメソッドが戻る前に行われます。 入力パネルが既にフローティングまたはドッキング操作モードで開かれている場合、In-Place入力パネルまたはIn-Place入力パネル アイコンを配置しようとすると失敗します。 さらに、 TextInputPanel オブジェクトにアタッチされているウィンドウに現在フォーカスがない場合、メソッドは失敗します。
SetInPlacePosition または SetInPlaceHoverTargetPosition を呼び出しても、In-Place入力パネルまたは入力パネル アイコンが自動的に表示されることはありません。次に表示される位置を設定するだけです。 SetInPlaceVisibility を呼び出すと、それらを強制的にすぐに表示できます。
In-Place入力パネルを配置するときに、画面から消えるかどうかを計算するのは少し難しい場合があります。 このプロセスを簡単にするために、このプロセスを簡略化するために使用できる TextInputPanel オブジェクトのいくつかのプロパティがあります。 これらのプロパティとイベントを組み合わせて使用して、すべての状態のIn-Place入力パネルの正確なサイズを決定できます。
- InPlaceBoundingRectangle – このプロパティは、現在の入力言語の最大入力領域が表示されている場合に、In-Place入力パネルの外接する四角形を提供します。 書き込みパッドまたは文字パッドが最大の入力領域に決定された場合は、[挿入] ボタンの高さが含まれます。 補正コームの高さは含まれません。In-Place入力パネルの自動拡張時に、 InPlaceSizeChanging / InPlaceSizeChanged イベント ペアが発生し、このプロパティの値が更新され、追加の書き込み領域または書き込み行が含まれます。
- PopUpCorrectionHeight – このプロパティは、入力パネルの上に配置されている場合の挿入後の補正コームの高さを指定します。 挿入後の補正コームがポップアップされた状態でIn-Place入力パネルの完全な高さを取得するには、 InPlaceBoundingRectangle の高さを PopUpCorrectionHeight に追加します。
In-Place入力パネルと入力パネル アイコンの絶対位置を設定するより簡単な代替手段として、アプリケーションでは、In-Place入力パネルが既定でテキスト入力フィールドの上または下に表示されるかどうかを指定できます。 このようにすると、より緩やかに制御された方法でアプリケーション レイアウト内の要素が重ならないようにすることができます。 これを行うには、 PreferredInPlaceDirection を InPlaceDirection_Bottom または InPlaceDirection_Topに設定します。 In-Place入力パネルは、画面に入力パネルを維持するために必要な場合にアプリケーションによって設定された基本設定をオーバーライドするため、このプロパティは優先設定です。 システムの既定値は、可能な場合はテキスト フィールドの下にIn-Place入力パネルを配置し、それ以外の場合は上に配置します。 PreferredInPlaceDirection を InPlaceDirection_Auto に設定すると、システムの既定値が復元されます。
TextInputPanel オブジェクトのプロパティ、メソッド、およびイベントを組み合わせることで、開発者は、In-Place入力パネルを制御して、In-Place入力パネルと入力パネル アイコンをアプリケーション レイアウトに正確に配置できるため、レイアウト フローが中断されず、場合によっては統合されたように見えることがあります。 この新しいレベルのコントロールは、タブレット アプリケーション設計にとって大きな勝利です。
3 つの入力パネル領域へのアクセス: 書き込みパッド、文字パッド、キーボード
入力パネルには、書き込みパッド、文字パッド、キーボードの 3 つの入力領域があります。 TextInputPanel オブジェクトを使用すると、アプリケーションは、入力パネルが開いたときにユーザーに表示される既定の入力領域を指定できます。 アプリケーションがこれを行うメイン理由は、入力領域と特定のフィールドの入力タイプをペアにするためです。 たとえば、コメント フィールドへの入力には Writing Pad が最適ですが、数字と文字の両方を含む製品のシリアル番号を入力する方がキーボードの方が便利な場合があります。 既定の入力領域を指定するために、アプリケーションは 、PanelInputArea 列挙で定義されている 3 つの入力領域のいずれかに DefaultInputArea プロパティを設定します。 次の図は、3 つの入力領域を示しています。
システムの既定の入力領域は、英語、フランス語、ドイツ語、スペイン語、イタリア語、ポルトガル語、オランダ語、およびその他すべてのラテン語入力言語の書き込みパッドです。 日本語、中国語、韓国語を含む東アジア言語の場合、既定の入力領域は Character Pad です。 ただし、ユーザーが入力領域を変更すると、現在の入力言語の既定の入力領域がオーバーライドされ、その入力言語の新しい既定値として格納されます。 キーボードは、ユーザーまたはグループ ポリシーによってパスワード セキュリティが無効になっていない限り、入力言語に関係なく、パスワード フィールドの既定の入力領域です。 現在のフィールドがパスワード フィールドまたは現在の入力言語の手書き認識エンジンでない限り、プログラムによって既定の入力パネル領域を設定すると、プログラムによってシステムの既定値がオーバーライドされます。 DefaultInputArea プロパティを InPlaceDirection_Auto に設定すると、システムの既定の設定が復元されます。
既定の入力パネル領域がプログラムで設定されているかどうかに関係なく、ユーザーは入力パネルを開いた後に現在の入力パネル領域を変更することができます。 ユーザーが現在の入力領域を変更した後、ユーザーの選択は、入力パネルが閉じるか、ユーザーが再び選択を変更するまで保持されます。 入力パネルを閉じてから再度開くと、プログラムによって設定された既定の入力領域が再表示されます。
現在の入力パネル領域は既定の入力パネル領域とは異なる場合があるため、アプリケーションは CurrentInputArea プロパティに対してクエリを実行して、現在表示されている入力領域を特定できます。 入力パネルが現在表示されていない場合、現在の入力領域は既定の入力領域と等しくなります。 CurrentInputArea プロパティは、PanelInputArea_Autoと等しくありません。 DefaultInputArea がPanelInputArea_Autoと等しい場合、CurrentInputArea は、最後に表示された入力領域と等しくなります。入力パネルが表示されていない場合は、現在の入力言語のシステムの既定値になります。
PenInputPanel オブジェクトと TextInputPanel オブジェクトの入力領域のサポートの主な違いは、アプリケーションに、Writing Pad と Keyboard に加えて、既定の入力領域を Character Pad に設定するオプションが用意されていることです。
アプリケーションは、上記のプロパティを使用して、さまざまなフィールドに表示される入力パネル入力領域を制御し、ユーザーのテキスト入力エクスペリエンスを最適化できます。 さらに、アプリケーションは現在の入力領域の認識を維持し、現在のユーザー タスクに最適な入力領域に応じて条件付き決定を行うことができます。
入力パネルの対話モードに関する詳細情報
入力パネルの現在の入力領域を検出できることに加えて、現在の相互作用モード (インプレース、ドッキング、フローティング) を検出することもできます。 ユーザーがアプリケーションとやり取りする方法を理解するか、 TextInputPanel オブジェクトの一部のメソッドとプロパティがIn-Place対話モードにのみ適用されるため、アプリケーションが現在の対話モードを認識することが重要な場合があります。 たとえば、アプリケーションでは、既存のユーザー インターフェイス要素をリフローし、In-Place入力パネルをそのユーザー インターフェイス内の空白領域の上に配置します。調整する前に、現在の対話モードがインプレースであることを確認チェック必要があります。
TextInputPanel オブジェクトの CurrentInteractionMode プロパティは、ユーザーが選択した現在の対話モードを格納します。 使用できるモードは、 InteractionMode 列挙によって次のように定義されます。
InteractionMode_InPlace – In-Place対話モードでは、現在フォーカスがあるテキスト入力フィールドの横に入力パネルが表示されます。 既定では、挿入ポイントがテキスト入力フィールドに配置されると、In-Place入力パネル アイコンが表示されます。 [入力パネル] アイコンをタップすると、入力パネルが展開されます。 In-Place入力パネルは、挿入ポイントが編集可能なフィールドにある場合にのみ表示されます。
InteractionMode_Floating – フローティング対話モードは、挿入ポイントに関連付けられていない点を除き、InPlace 相互作用モードに似ています。 [フローティング入力パネル] は、画面の左端に既定で表示される [入力パネル] タブをタップして開きます。 [フローティング入力パネル] タブと [入力パネル] タブの両方を、ユーザーがドラッグおよび再配置できます。 フローティングモードでは、入力パネルの位置決めと制御はユーザーに完全に任されています。
InteractionMode_DockedTop – Docked-Top操作モードでは、入力パネルが画面の上部に表示され、アクティブなデスクトップのサイズが変更され、入力パネルが他のウィンドウや UI 要素と重ならないようにします。 ドッキングモードでは、入力パネルをドラッグしたり移動したりすることはできません。
InteractionMode_DockedBottom – Docked-Bottom対話モードは、画面の下部に入力パネルが表示される点を除き、Docked-Topモードと同じです。
入力パネルが表示されない場合、現在の対話モードはインプレースです。
現在の相互作用モデルの公開は、 TextInputPanel オブジェクトが以前のバージョンで使用できるよりも、入力パネルの状態に関する詳細情報を提供するもう 1 つの方法です。
入力パネルの補正モードに関する詳細情報
TextInputPanel オブジェクトが提供する入力パネルの最後の側面は、修正モードです。 補正モードを知ることは、アプリケーションが入力パネルの現在のサイズを決定するのに役立ちます。 挿入後の修正がアプリケーションでどのように拡張されるかを制御することは、アプリケーションの修正エクスペリエンスをカスタマイズする 1 つの方法です。
プリ挿入と挿入後の 2 つの基本的なモードがあります。 挿入前補正コームは、アプリケーションに挿入する前にテキストを修正するために使用されます。 これは、ユーザーのインクとして書き込みパッドのベースラインの下に表示される保留中のテキストをタップしてアクティブ化されます。 挿入後の補正コームは、アプリケーションに挿入された後にテキストを修正するために使用されます。 これは、挿入ポイントを に配置するか、以前に挿入したテキストを選択することによってアクティブ化されます。 2 つの基本的なモード以外にも、挿入後の補正コームの表示方法にはいくつかのバリエーションがあります。 最初に、入力パネルの上または下に表示され、次に折りたたまれているか展開されて表示されます。 折りたたまれた状態では、挿入後の補正コームには代替候補の一覧のみが表示されます。 展開された状態では、代替と単語を書き換える領域の両方が含まれます。
CurrentCorrectionMode プロパティを使用すると、アプリケーションで補正コームの現在の構成を決定できます。CorrectionMode 列挙で定義されているこのプロパティの値は、NotVisible、PreInsertion、PostInsertionCollapsed、および PostInsertionExpanded です。 入力パネルまたは補正コームが表示されない場合、 CurrentCorrectionMode は NotVisible になります。
既定では、 が修正可能なテキストを選択すると、挿入後の補正コームが展開され、挿入ポイントが修正可能なテキストに配置されたときに折りたたまれた状態が表示されます。 アプリケーションでは、 ExpandPostInsertionCorrection プロパティを true に設定することで、挿入後の補正コームを常に展開して表示する場所を指定できます。 システムの既定値は false です。 ExpandPostInsertionCorrection プロパティを IHandWrittenTextInsertion インターフェイスと組み合わせて使用すると、アプリケーション開発者は、自動的に取得されないアプリケーションに修正サポートを安く追加できます。
入力パネルの修正状態の追跡と制御は、より緊密な入力パネルとアプリケーション統合を可能にする TextInputPanel オブジェクトの多くの新機能の 1 つです。
イベントが発生する前と後のイベント通知
TextInputPanel オブジェクトで大幅に改善された入力パネルプログラミングのもう 1 つの側面は、イベント モデルです。 変更が発生した後に入力パネルの状態の変化を通知するイベントのみを発生させるのではなく、変更の前後に個別のイベントが送信されるようになりました。 イベントの開始を通知するイベントには、'Changing' や 'Inserting' などの現在の時制動詞が含まれています。一方、イベントの結論を通知するイベントには、"Changed" や "Inserted" などの過去の時制動詞が含まれます。
このイベント モデルを使用すると、発生する前または発生した変更にアプリケーションが対応できるようになります。 入力パネルは、すべてのイベントのイベント ハンドラーが完了するまで、変更の続行または変更後の再開をブロックされます。 これらのイベントは同期的であり、この方法でアプリケーションは、応答が完了するまで変更を遅延させることができます。 ただし、イベント ハンドラーが入力パネルを実行している時間は、ユーザーがアクセスできなくなり、ハングしているように見える可能性があるため、イベント ハンドラーが適切に動作することが重要です。 ただし、アプリケーションでイベントを防止またはキャンセルすることはできません。 すべてのイベント パラメーターは読み取り専用です。 TextInputPanel オブジェクトの 6 つのイベント ペアの説明を次に示します。
- InPlaceStateChanging / InPlaceStateChanged – インプレース状態がホバーから展開に切り替わったか、またはその逆に切り替わったことを通知します。 パラメーターは、新しいインプレース状態と古いインプレース状態です。 CurrentInPlaceState プロパティの値の変更と一致します。
- InPlaceSizeChanging / InPlaceSizeChanged – ユーザーのサイズ変更、自動拡張、または入力領域の変更により、In-Place入力パネルのサイズが変更されようとしている場合、または変更された場合に示されます。 パラメーターは、新しい四角形と古い外接する四角形です。 InPlaceBoundingRectangle プロパティの値の変更と一致します。
- InputAreaChanging / InputAreaChanged – 入力パネルの入力領域が変更されようとしているか、または 3 つの入力領域の他の領域 (書き込みパッド、文字パッド、キーボード) に変更されたときに報告します。 パラメーターは、新しい入力領域と古い入力領域です。 CurrentInputArea プロパティの値の変更と一致します
- CorrectionModeChanging / CorrectionModeChanged – 修正モードが変更されようとしているか、変更されたことを通知します。 修正可能なモードは、非表示、挿入前、挿入後の折りたたみ、挿入後の展開です。 パラメーターは、新旧の修正モードです。 CurrentCorrectionMode プロパティの値の変更と一致します。
- InPlaceVisibilityChanging / InPlaceVisibilityChanged – In-Place入力パネルの可視性が変更または変更されるタイミングを示します。 パラメーターは、新旧の可視性です。 false の新しい可視性は、In-Place入力パネルが開かないことを意味しますが、フローティングまたはドッキングの対話モードで入力パネルが表示されるのを妨げることはありません。
- TextInserting / TextInserted – テキストが挿入されようとしているか、入力パネルから挿入されたタイミングを示します。 Parameter は InkDisp オブジェクトの配列であり、それぞれに挿入を構成するインクとテキストの行が含まれます。 このイベントの詳細については、次のセクションを参照してください。
これらのイベントは、入力パネルでの変更に関する重要な情報をアプリケーションに提供し、それに応じて対応できるようにします。 ここでも、入力パネル イベント モデルの変更は、アプリケーションと入力パネルの間の相互作用を向上するためのステップを表します。
入力パネルに入力されたインクとテキストの収集のサポート
最後に、 TextInputPanel オブジェクトの非常に強力な新機能の 1 つは、テキストがアプリケーションに挿入された時点で、入力パネルから入力パネルから入力されたテキストのインク オブジェクトを取得する機能です。 これは、変更の追跡と記録の保持を目的として要求されることが多い機能です。 また、アプリケーションでは、静的要素として、またはカスタム の手描き入力サーフェイスを使用して、UI でインクを使用することもできます。
入力パネルで入力されたテキストの InkDisp オブジェクトを受け取るには、TextInputPanel オブジェクトによって生成された TextInserting イベントまたは TextInserted イベントを受け取るためにアプリケーションを登録する必要があります。 TextInserting イベントは、入力パネルからアプリケーションにテキストが挿入される直前に発生し、すべてのイベント ハンドラーが完了するまでテキストは挿入されません。 TextInserted イベントは、テストが挿入された直後に発生します。 TextInserting イベントと TextInserted イベントの両方の唯一のパラメーターは、入力パネルから挿入されたテキスト行ごとに 1 つの InkDisp オブジェクトを含む InkDisp オブジェクトの配列です。 注: 入力パネルは、イベント ハンドラーの実行中は非アクティブであり、ユーザーにハングしているように見える可能性があるため、これらのイベント ハンドラーを軽量にし、迅速に実行することが重要です。 さらに、アプリケーションでは、そのイベントに関連するパフォーマンス コストがあるため、情報に特定の用途がない限り、このイベントのハンドラーを作成しないでください。 入力パネルは、データを要求するアプリケーションがある場合にのみインク データをマーシャリングします。それ以外の場合、入力パネルはこのコストのかかる操作をスキップできます。 TextInserting イベントと TextInserted イベントの両方のパラメーターは読み取り専用です。つまり、アプリケーションが挿入されたテキストをアプリケーションに挿入する前に変更することはできません。
この新しい機能を使用してアプリケーションで実行できる可能性は幅広く、使い方が簡単ではありません。 入力パネルを介して入力された認識されたテキストとインクをアプリケーションによって収集できるようにするのは、Windows Vista で入力パネルの開発者向けストーリーが改善されるもう 1 つの方法です。
まとめ
全体的に、タブレット PC 入力パネルのプログラミングストーリーは、Windows Vista の TextInputPanel オブジェクトの導入により大幅に改善されています。 TextInputPanel オブジェクトを使用すると、アプリケーション開発者は、以前のリリースの状態入力パネルに関するより大きな制御と詳細情報を取得できます。 そのため、新しいタブレット PC アプリケーションをビルドしたり、既存のアプリケーションを更新したりするアプリケーション開発者は、現在非推奨になった PenInputPanel オブジェクトではなく TextInputPanel オブジェクトを使用することを強くお勧めします。 さらに、入力パネルの絶対位置や入力パネル アイコンなどの新しい機能のサポート、および入力パネルを介して入力された認識エンジン テキストとインクの両方をアプリケーションが受け取る機能により、新しいアプリケーションの機能とシナリオが可能になります。 これらの機能やその他の機能を含めることは、開発者のフィードバックに直接応答し、入力パネルとタブレット PC アプリケーションの完全な統合に向けた最初の手順をマークします。 最終的には、タブレット PC アプリケーション機能の拡張は、アプリケーション開発者とタブレット PC プラットフォームの両方にとって大きな勝利です。