PenInputPanel クラスを使用した入力パネルのプログラミング

[PenInputPanelMicrosoft.Ink.TextInput に置き換えられました。 「テキスト入力パネルのプログラミング」を参照してください。

PenInputPanel オブジェクトを使用してシステム レベルのタブレット PC 入力パネルをプログラムする方法について説明します。

入力パネルと PenInputPanel オブジェクト

Microsoft Windows XP Tablet PC Edition バージョン 1.0 では、システム レベルのタブレット PC 入力パネルには、Windows プラットフォーム全体でテキスト入力を実行するためのユニバーサル メカニズムが用意されていますが、プログラムによるアクセスは提供されません。 Windows XP Tablet PC Edition Software Development Kit (SDK) バージョン 1.5 以降では、 PenInputPanel オブジェクトを使用すると、テキスト入力ツールをアプリケーションに直接統合し、以前は使用できなかったレベルの制御を提供できます。 Windows XP Tablet PC Edition 2005 以降では、 PenInputPanel オブジェクトによって提供されるインプレース入力機能を含むようにシステム レベルの入力パネルがアップグレードされました。

次の図は、 自動要求フォームのサンプル サンプルに表示される入力パネルを示しています。

自動車クレームに使用されるフォーム上に表示される入力パネル

入力パネルは、追加のコードを必要とせずに、Windows XP Tablet PC Edition 2005 以降で実行されているアプリケーションに同じインプレース入力機能を提供することで 、PenInputPanel よりも優先されます。 PenInputPanel オブジェクトの使用に関するこの記事は、下位互換性のために提供されています。 PenInputPanel オブジェクトを既に利用しているアプリケーションは同じように機能しますが、アプリケーションが Windows XP Tablet PC Edition 2005 以降で実行されている場合、PenInputPanel の代わりに入力パネルが表示される点が異なります。

タブレット PC 用の新しいアプリケーションを開発していて、インプレース ユーザー入力ソリューションを使用する場合、入力パネルは Windows XP Tablet PC Edition 2005 以降でこれを自動的に提供します。 PenInputPanel オブジェクトをインスタンス化する必要はありません。

入力パネルの無効化

入力パネルを無効にする場合があります。 これを実現するには 2 つの方法があります。 これを行うには、プログラムを使用するか、アプリケーション全体の入力パネルを無効にするレジストリ エントリを設定します。

プログラムによる入力パネルの無効化

プログラムで入力パネルを無効にするには、 PenInputPanel をインスタンス化し、 その AutoShow プロパティを False に設定 します

using Microsoft.Ink;

// ...

private PenInputPanel theInputPanel;

// ...

private void Form1_Load(object sender, System.EventArgs e)
{
// Attach the Input Panel to a specific TextBox control.
theInputPanel = new PenInputPanel(textBox1);

// Disable the Input Panel for the TextBox.
theInputPanel.AutoShow = false;
}

1 つのアプリケーションで複数のコントロールに対して入力パネルを無効にするには、各コントロールに 対して PenInputPanel オブジェクトをインスタンス化し、それぞれの AutoShowプロパティを False に 設定するか、1 つの PenInputPanel をインスタンス化して、入力フォーカスの変更に応じてコントロールからコントロールに移動します。 これら 2 つの手法の詳細については、「 PenInputPanel サンプル 」トピックを参照してください。

レジストリを使用した入力パネルの無効化

レジストリ エントリを設定して、アプリケーション全体の入力パネルを無効にすることができます。 ただし、[ ファイルを開く ] ダイアログ ボックス、 [印刷 ] ダイアログ ボックス、[ ファイルの保存 ] ダイアログ ボックスなどの一般的なダイアログ ボックスでも無効になります。 これにより、アプリケーションのユーザー エクスペリエンスが他のタブレット PC アプリケーションと矛盾する可能性があります。

レジストリ キーを DisableInPlace 0 に設定すると、入力パネルのユーザー インターフェイス (UI) がアプリケーションに表示されなくなります。 レジストリ キーは にDisableInPlaceHKEY_LOCAL_MACHINE\Software\Microsoft\TabletTip\配置する必要があります。 次に、入力パネルを無効にするアプリケーションの完全なパスを使用して、新しいレジストリ値を追加します。 次のレジストリ エントリの例では、MyApp というアプリケーションで入力パネルが無効になります。

[HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\WindowsNT\TabletTIP\DisableInPlace]``"C:\Program Files\My App\MyApp.exe"=dword:00000000

入力パネル UI を無効にした後もアプリケーションに問題が発生する場合は、基になるフレームワークを無効にすることが必要な場合があります。これにより、アプリケーションでキャレットの場所を照会します。 たとえば、入力パネルでは、アプリケーションのキャレット追跡コードのバグが公開される場合があります。 キャレット追跡クエリをオフにすると、入力パネル UI が表示されなくなります。 フレームワークを無効にするには、レジストリ キーを EnableCaretTracking 0 に設定します。 このキーは で見 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AppCompatFlags\CaretTracking\つけます。

注意

Windows XP のアクセシビリティ ツールと音声テクノロジでもこのフレームワークが使用されるため、クエリを無効にすると、アプリケーションでこれらの機能も無効になります。

 

入力パネルと Web ページ

Web ページで API を使用するには、部分信頼環境で機能する必要があります。 PenInputPanel クラスのすべてのメンバーには、次を除く完全な信頼が必要です。

これらの API は、Web ページなどの部分信頼環境で機能し、 PenInputPanel オブジェクトをインスタンス化し、それをコントロールにアタッチし、そのコントロールの入力パネルを無効にすることができます。 詳細については、「PenInputPanel クラスと Ink on the Web を使用した入力パネルのプログラミング」を参照してください。

PenInputPanel オブジェクト

このトピックの残りの部分では、タブレット PC 対応アプリケーションで PenInputPanel オブジェクトを使用する方法について説明します。 具体的には、このトピックでは、プログラミング オブジェクトについて説明する場合は PenInputPanel オブジェクト、UI 要素を参照する場合はペン入力パネル、通常はタブレット PC 画面の側にあるグローバル入力パネルを参照する場合は PC 入力パネル (または入力パネル) を参照します。

次のセクションでは、 PenInputPanel オブジェクトと UI について説明します。