次の方法で共有


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

[PenInputPanel は、microsoft.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 に設定するか、単一の PenInputPanel をインスタンス化し、入力フォーカスの変化に応じてコントロールからコントロールに移動します。 これら 2 つの手法の詳細については、PenInputPanel サンプル トピック を参照してください。

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

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

DisableInPlace レジストリ キーを 0 に設定すると、入力パネルのユーザー インターフェイス (UI) がアプリケーションに表示されなくなります。 DisableInPlace レジストリ キーを HKEY_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 クラスを使用した入力パネルのプログラミング」および「Web 上のインク」を参照してください。

PenInputPanel オブジェクト

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

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