(57)【特許請求の範囲】
【請求項１】
入力の処理に関して計算機で実行される方法であって、
ユーザーインターフェースコントロールを指向している複数の同時入力を受信するステップと、
前記複数の同時入力を超える追加の同時入力を受信するステップであって、前記追加の同時入力も前記ユーザーインターフェースコントロールを指向しているものと、
前記ユーザーインターフェースコントロールに割り当てられているステータスを識別するステップと、  前記識別されたステータスに基づいて、前記ユーザーインターフェースコントロールに対する複数の同時入力をキャプチャするステップと、
前記識別されたステータスに基づいて、前記追加の同時入力をフィルタアウトするステップと、を含む方法。
【請求項２】
前記識別ステップが、前記ステータスが、前記ユーザーインターフェースコントロールと異なる関連を有する、他のユーザーインターフェースエレメントに割り当てられるか否かを識別するステップを含むことを特徴とする請求項１記載の方法。
【請求項３】
前記識別ステップが、前記ステータスが、前記ユーザーインターフェースコントロールを含むユーザーインターフェースエレメントの階層構造の最上位に割り当てられるか否かを識別するステップを含むことを特徴とする請求項１記載の方法。
【請求項４】
前記識別ステップが、前記ユーザーインターフェースコントロールに割り当てられたステータスによって定義されるパラメーターを識別するステップを含むことを特徴とする請求項１記載の方法。
【請求項５】
前記ステータスによって定義されるパラメーターを識別するステップが、いくつのユーザー入力機構が前記ユーザーインターフェースコントロールにキャプチャされ得るかを設定した制限を識別するステップを含むことを特徴とする請求項４記載の方法。
【請求項６】
前記制限が、単一のユーザー入力機構より大きいことを特徴とする請求項５記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機への入力処理（manage）に関し、具体的には、１人又は複数のユーザーによる同時多重入力処理に関する。
【背景技術】
【０００２】
コントロールは、グラフィカルユーザーインターフェース（複数）（ＧＵＩ）を構築するために、計算機プログラマーによって利用されるインターフェースエレメントである。異なるコントロールが、計算機プログラムユーザーとの異なるタイプの対話（インタラクション）を支援する。ラジオボタン、チェックボックス、ドロップダウンリスト及びツールバーのようないくつかのコントロールは、選択型の機能性を支援する。タブ及びスクロールバーのような別のコントロールは、ナビゲーション型の機能性を支援する。テキストボックス及びコンボボックスのような別のコントロールは、テキスト入力の機能性を支援する。ツールチップ、プログレスバー、及びラベルのような別のコントロールは、出力の機能性を支援する。更に別のコントロールは、ウィンドウ指向の機能性を支援する。多くの場合、計算機プログラマーは、選択すべきコントロールの収集を包含しているコントロールツールキットへのアクセスを有する。
【０００３】
今日、１人又は複数のユーザーによる同時（又はほとんど同時）起動の多重入力を支援する装置が紹介されている。残念ながら、現在のコントロールシステムは、一般に、このタイプの多重入力スキームを効果的に処理するように構成されていない。現在のシステムの多くは、それらの多重入力（例えば多重接触）シナリオを支援する能力の観点からは特に有効でない、単一の入力コントロールに制限されている。単一の入力コントロールは、一般に、そのような状況において誤動作するか及び／又は故障したように見える。
【０００４】
例えば、読者は、ドラッグ及びスクロールをするための「ＵＰ」ボタン、「ＤＯＷＮ」ボタン、及び「親指」スライドのような別のコントロールを含む複合コントロールである従来のスクロールバーを組み込んでいるインターフェースを想像できよう。多くの多重入力システム内において、ユーザーが同時にＵＰとＤＯＷＮボタンを押下することを試みる場合、ボタンは、アップコマンドとダウンコマンドを同時に起動しようとする。アプリケーションは競合するイベントを効率的に処理するように構成されそうもない。
【０００５】
コントロールの競合を回避するための信頼できる解決策は、アプリケーション全体に対するユーザー入力を単一の入力だけに制限することである。しかしながら、これらの環境では、多重入力機能性の価値を高めない。従って１人又は複数のユーザーからの多重入力を効率的に処理するように構成されるコントロールスキームの必要がある。
【０００６】
前述したものは、一般的な背景情報を与えられているに過ぎず、請求項記載対象の範囲を決定する際の支援として使用することを意図されていない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、１人又は複数のユーザーからの多重入力を効率的に処理（manage）するように構成されるコントロールスキームを提供することである。
【課題を解決するための手段】
【０００８】
多重ソースからの入力を多重コントロールに同時にキャプチャさせ得るように（例えばプログラマーによって）構成可能なコントロールシステムを開示する。同様に又は代替として本システムは、多重ソースからの入力を単一のコントロールに同時にキャプチャさせ得るように構成可能である。本システムは、個別のコントロールに対し競合するイベントを分離するための一貫性があって拡張可能なスキームも提供する。一実施形態において、これは、追加の入力（複数）が所与のコントロールにキャプチャされ得るか否かに関して選択的に決定可能なように本システムを（例えば、プログラマーによって指定される選択に基づいて）構成可能なこと、を意味する。
【０００９】
この発明の概要は、以下、発明を実施するための形態に更に説明されている選択された概念を簡易化された形式で紹介するために、提供されている。この発明の概要は、請求項記対象の主要な特徴も実質的な機能も特定することを意図されておらず、請求項記載対象の範囲を決定する際の援助として使用することも意図されていない。請求項記載対象は、背景に言及されている不便性のいくつか又はすべてを解決する実装に限定されていない。
【図面の簡単な説明】
【００１０】
【図１】計算機プログラミング環境の概略図である。
【図２】ユーザーインターフェース例の図である。
【図３】ユーザーインターフェース例に関連するユーザーインターフェースエレメントのツリー表現である。
【図４】支援されていない入力を無視するキャプチャゲート機能を有する印を付けられたいくつかのユーザーインターフェースエレメントを含むツリー表現である。
【図５】多重キャプチャシナリオによる入力を処理するための方法を例示するブロックの流れ図である。
【図６】キャプチャゲートシナリオによる入力を処理するための方法を例示するブロックの流れ図である。
【図７】計算システム環境の概略図である。
【発明を実施するための形態】
【００１１】
図１は、計算機プログラミング環境（１００）の概略図である。環境（１００）において、プログラマーは、ユーザーインターフェース（１１０）を製造するために、ユーザーインターフェースフレームワーク（１０２）と対話（インタラクション）する。インターフェース（１１０）は、複数のコントロール（１１２）を含む。
【００１２】
図１において、ユーザー（１２０）が、１つ以上の入力機構（１２２）、（１２４）、及び（１２６）を介しユーザーインターフェース（１１０）とインタラクションするように示されている。入力機構（１２２）、（１２４）、及び（１２６）のいくつか又はすべてを操作することによって、ユーザー（１２０）は、フレームワーク（１０２）とのインタラクションを介し、プログラマー（１０１）によって生成され構成されるコントロール（１１２）とインタラクションし得る。一実施形態において、多重入力は、複数の入力（１２２）、（１２４）、及び（１２６）から同時（又はほとんど同時）に通信され得、必ずしも単一のユーザーだけから発する必要がない。機構（１２２）、（１２４）、及び（１２６）は、マウス入力機構、タッチ画面入力機構、音声入力機構、レーザーポインター入力機構、又はユーザー（１２０）に入力を通信させ得る別の任意の機構などに限定しないが、任意の入力機構であり得ることに留意されたい。理論上、３つを超える例示された入力機構が確実に存在し得る。更に、３つの入力（１２２）、（１２４）、及び（１２６）すべては、単一の入力機構（例えば、単一のタッチ画面機構への同時多重入力）から発する個々の入力であり得る。
【００１３】
本明細書において、用語「同時」の使用は、厳密な同時として理解する必要がないことに留意されたい。競合は、入力中の任意の期間、例えば、数秒、数ミリ秒、又は別の適切な及び／又は構成可能な期間が想定される。
【００１４】
フレームワーク（１０２）は、例示として、多重キャプチャコンポーネント（１０４）及びキャプチャゲートコンポーネント（１０６）を含む。対応するアプリケーションプログラムインターフェース（ＡＰＩ）（１０５）及び（１０７）を含むコンポーネント（１０４）及び（１０６）は、多重入力コントロールに特化された支援を提供するために、フレームワーク（１０２）の機能性拡張を支援する。多重キャプチャコンポーネント（１０４）は、例示として、多重入力機構（例えば１つ以上の機構（１２２）、（１２４）及び／又は（１２６））からの入力をコントロール（１１２）にキャプチャさせ得、その装置（単数又は複数）からのイベントすべてをコントロールにリダイレクトさせ得る。代替又は追加として、多重キャプチャコンポーネント（１０４）は、多重入力機構からの入力（例えば、多重入力機構からの同時入力）を多重コントロール（１１２）にキャプチャさせ得、装置からのイベントを適切なコントロールに分配させ得る。キャプチャゲートコンポーネント（１０６）は、競合するイベントを無視するための統合化された方法をプログラマー（１０１）に与える。一実施形態において、コンポーネント（１０６）は、例示として、特定のコントロールに対し競合する状況を回避するために、ユーザー入力を制限する特定のロジックコントロールをプログラマー（１０１）に定義させ得る。
【００１５】
ユーザーフレームワーク（１０２）内のコンポーネント（１０４）及び（１０６）の機能性に関する更に詳細な説明に移る前に、最初に、単一の入力コントロールを実装するための最新の技術概要へそれることは少なくとも価値がある。一般的なシナリオにおいては、ユーザーインターフェースフレーム構造は、最初に入力装置をキャプチャし、その後、対応するユーザーインターフェースエレメント（すなわち対応するコントロール）にそれをバインドする方法を介する特定のコントロールへ入力をリダイレクトするための方法を提供する。かくして、入力装置がキャプチャされたとき、入力パイプラインは、キャプチャされた期間、その装置の実際の位置が存在している位置を無視し（例えば、一旦、マウスがキャプチャされると、カーソルが置かれている位置を無視し）、その装置からの入力をキャプチャしているコントロールにリダイレクトする。
【００１６】
従来の単一の入力シナリオの例は、マウス入力装置とのインタラクションを支援する一般的なペイントアプリケーションにおいて見出され得る。ユーザーが、描写キャンバスに「ペイント」しようとするとき、その人は、キャンバス上でカーソルを動かして、例えばマウスボタンを押下し保持することによって「マウスダウン」イベントを開始する。マウスダウンイベント時、本アプリケーションは、マウス装置をキャンバスコントロールにキャプチャさせる。このキャプチャは、例えば、マウスボタン押下の解除による「マウスアップ」イベント形式でユーザーが起動した解除時、終了する。キャプチャされた期間中、（カーソル移動のような）マウスイベントすべては、カーソルの位置がキャンバスエリア（例えば、ツールバーユーザーインターフェースエレメント上）の外側にあっても、キャンバスコントロールへ転送される。
【００１７】
コンポーネント（１０４）は、例示として、ポインターと同種の（「接触」を含む）装置すべてを単独の物理装置又は仮想装置として処理し、それらの装置のいくつかを単独でコントロールライブラリ（又はアプリケーション）にキャプチャさせることによって、従来の手段を拡張する。かくして、一実施形態において、コントロールは、多重接触を認識するように構成され、その上で発生する任意の接触をキャプチャし、対応するその後のイベントすべてをコントロールにルーティングする。
【００１８】
一実施形態においては、必ずしもではないが、フレームワーク（１０２）は、入力装置のキャプチャを単一のコントロールに制限する制約を課すように構成される。そのような制限は、潜在的な曖昧さを回避し得る。しかしながら、単一のコントロールが多重入力装置をキャプチャするように構成可能であることを、確かに想定している。一実施形態において、フレームワーク（１０２）は、キャプチャが成功又は解除されていることの確認として、「ＧｏｔＣａｐｔｕｒｅ」及び「ＬｏｓｔＣａｐｔｕｒｅ」イベントを起こすように構成される。一実施形態において、フレームワーク（１０２）は、（例えば、指が接触装置を離れたとき、マウスボタンが離されたときなど）装置が接続を切られたとき、自動的にキャプチャを解除するように構成される。
【００１９】
コンポーネント（１０６）は、例示として、競合するイベントを無視する支援をする。この機能性の説明に関する文脈を提供するために例を与える。図２は、ユーザーインターフェース例（２００）の図である。インターフェース（２００）は、例示として、ユーザーがパレットエリア（２０４）に図面を作成可能なペイントアプリケーションの一部である。ボタングループ（２０２）は、（例えば、ペイントブラシ、消しゴム、拡大鏡のような）異なる機能をユーザーに切り換えさせ得る（４つの例示的な異なるボタン（２０２）を図２に示す）。スクロールバー（２０６）は、ユーザーが所望に応じてパレットエリアの上方及び下方への移動を可能にする。スプリッター（２０８）は、インターフェースの左側を右側から分割する。当業者は、実質的にインターフェース（２００）と同様のインターフェースを有するアプリケーションに精通しているだろう。
【００２０】
図３は、インターフェース（２００）の例示的なエレメント（例えばコントロールなど）のツリー表現である。例示として、図３に示されているエレメントのいくつかが、多重装置（又は多重接触）によって同時に作動され得、あるものはそうできないことは真実である。例えば、例示目的として、インターフェース（２００）エレメントの機能性は、以下の原理に基づいたインタラクションを支援するように構成される場合、最も望ましいと見なされる。
【００２１】
１．ボタン（２０２）それぞれが、単一の（例えば、単一の接触によって押下された）入力だけによって起動される。これは、ボタン動作を相対的に制限しない。
【００２２】
２．ボタン（２０２）は、実質的に「ツールセレクター」であって、ペイントアプリケーションが、一度に１つだけアクティブなツールを支援するための制限を有していると見なして、それらのボタンを含むグループボックス（ＧｒｏｕｐＢｏｘ）（２１０）に対する入力を単一入力だけに制限するように理解する。
【００２３】
３．スプリッター（２０８）は、例示として、左及び右のパネルのサイズを変更するためにユーザーによってドラッグされ得るエレメントである。同様に単一の入力だけを介する操作にそれを制限するように理解する。
【００２４】
４．スクロールバー（２０６）は、親指スライドのアップ及びダウン押下、及び／又はドラッグのような競合する動作を回避するために単一の入力だけを受理する必要がある。
【００２５】
５．スクロールバー内部のＵｐボタン及びＤｏｗｎボタン、及び親指スライドは、単一の入力それぞれを用いて実行するように設定され得る。また、これらのエレメントは複合コントロール（スクロールバー）部品を与えられると、もっと幅広のスクロールバーが、例示として、親指スライダーを同時にＵｐ及びＤｏｗｎ押下、及びドラッグを回避するための別の制限を追加する。
【００２６】
６．インターフェース（２００）に関連するその他のコントロールは、例示として、多重入力を受理し得る。例えば、ユーザーは、一方の手を用いてツールを選択し得ると同時に他方の手を用いて、キャンバスエリア（２０４）に複数の指で描き続け得る。
【００２７】
一実施形態において、キャプチャゲームコンポーネント（１０６）は、プログラマー（１０１）が、様々なコントロールの多重入力の処理方法を指定可能にする。コンポーネント（１０６）は、例示として、少なくとも２つの動作、すなわち
１）捕捉の試行
２）解除
を有する抽象クラス「キャプチャゲート（ＣａｐｔｕｒｅＧａｔｅ）」を提供する。プログラマー（１０１）は、フレームワーク（１０２）とのインタラクションを介し、所与のコントロールに対する適切な実装を可能にするために、キャプチャゲートの機能性を活用し得る。
【００２８】
一実施形態において、キャプチャゲートコンポーネント（１０６）は、特定のユーザーインターフェースエレメントに関連し、キャプチャゲートに設定させ得る支援を提供することによってフレームワーク（１０２）を拡張する。更に、一実施形態において、コンポーネント（１０６）は、特定のエレメントに対し（親鎖に沿って）最上位のキャプチャゲートを見出すように構成される。
【００２９】
当業者は、キャプチャゲート機能性が所与のユーザーインターフェースフレームワークへどのように統合化されるかに関する詳細が、所与のフレームワークに関連する実装の詳細に基づいて変化することを理解されよう。言い換えれば、キャプチャゲートの実装の詳細は、フレームワーク特有になる可能性が高い。例として、ワシントン州レッドモンドのマイクロソフト社によって提供される製品に関連するグラフィカルサブシステムであるウィンドウズ（登録商標）・プレゼンテーション・ファンデーション（ＷＰＦ）は、視覚的ツリー中の任意のユーザーインターフェースエレメントに設定されリトリーブされ得る添付プロパティを定義するための機能に関する支援を提供する。この場合、キャプチャゲートは、添付プロパティの値として実装され得る。これは、特定のフレームワークにおけるほんの実装の一例にすぎない。
【００３０】
通常、ユーザーインターフェースフレームワークは、Ｃａｐｔｕｒｅ（）メソッド及びＲｅｌｅａｓｅ（）メソッドを介しキャプチャ操作機能に関する支援を公開する。一実施形態において、キャプチャゲートコンポーネント（１０６）は、最上位のキャプチャゲートを見出し、それを捕捉しようとする機能を用いて、それらのメソッドを拡張する。エラーは、例示として捕捉（例えばＣａｐｔｕｒｅ（））が失敗した場合、返される。更に、コンポーネント（１０６）は、最上位のキャプチャゲートを見出し、それを解除（例えばＲｅｌｅａｓｅ（））するように構成される。
【００３１】
更にまた、フレームワークのレベルにおける一実施形態において、キャプチャゲートコンポーネント（１０６）は、例示として、特化機能を有する専用化されたキャプチャゲートに関する実装を提供する。例えば、シングルキャプチャゲート（ＳｉｎｇｌｅＣａｐｔｕｒｅＧａｔｅ）は、例示として、単一の装置だけに取得の制限をする。シングルキャプチャゲートは、実質的にキャプチャゲートの抽象クラスの特化である。キャプチャゲートコンポーネント（１０６）は、例示として、任意の動作を提供するための同一のインターフェース（捕捉及び解除）を有する別のキャプチャゲートを実装するための選択機能を用いた権限をコントロールの著作者に付与する。例えば、ボタンが、Ｎ個の同時接触による押下を要求する場合、コントロールの著作者は、同時にＮ個の入力を許可し、残りを無視するキャプチャゲートを提供し得る。当業者は、本明細書に提供されている特化の例が単に、本発明の範囲内にあるキャプチャゲートの多くの改造例のうちのいくつかであることを理解されよう。
【００３２】
したがって一実施形態においては、ユーザーインターフェース（ＵＩ）コントロールエレメントにキャプチャゲートを設定することによって、「単一の入力だけ」としてのクラスをコントロールクラスの作成者（例えばプログラマー（１０１））に指定させ得るための支援を提供する。上記の例に関しては、ラジオボタン、アップボタン、及びダウンボタンすべてが、ボタンコンストラクターにおいて、シングルキャプチャゲートがそれらに設定され得る。ボタン（又は任意のコントロール）が入力をキャプチャしようとするとき、キャプチャメソッドは、（ラジオボタン１に関して、グループボックスがキャプチャゲートのソースとして使用される）最上位のキャプチャゲートを自動的に見出し、それを捕捉しようとする。一実施形態において、Ｃａｐｔｕｒｅが偽の指標を返す場合、コントロールは、その装置からの入力及びそれが提供するその後のイベントを無視する。図２及び図３の例に続いて図４は、支援されていない入力を無視するために（黒丸によって示されている）印を付けられたキャプチャゲートを有するいくつかのユーザーインターフェースエレメントを示す。
【００３３】
一実施形態において、キャプチャゲートを公開するＡＰＩ（１０７）の本質は、
Public abstract class CaptureGate
{
protected virtual bool TryAcquire(InputDevice, UIElement); 
protected virtual void Release(InputDevice); 
public static void SetCaptureGate(UIElement, CaptureGate); 
}
である。
【００３４】
一実施形態において、本明細書に説明された別のメソッドは、ユーザーインターフェースフレームワークに対し内在的であって、ユーザーインターフェースフレームワークの大部分が提供する例えば、Ｃａｐｔｕｒｅ（）及びＲｅｌｅａｓｅ（）を介し間接的に呼び出される。この言及されたすべてから当業者は、別の実装スキームもまた本発明の範囲内にあることを理解されよう。
【００３５】
図５は、本明細書に説明されているような多重キャプチャ機能性と一致する多重キャプチャシナリオによる入力を処理するための方法（５００）の一実施形態を示すブロックの流れ図である。ブロック（５０２）により、入力が第１の入力機構から受信され、その入力は、ユーザーインターフェースコントロールを対象にしている。ブロック（５０４）により、第１の入力機構が、ユーザーインターフェースコントロールにキャプチャされる。ブロック（５０６）により、入力が第２の入力機構から受信され、その入力もユーザーインターフェースコントロールを対象にしている。ブロック（５０８）により、第２の入力機構が、第１の入力機構と同時にユーザーインターフェースコントロールにキャプチャされる。
【００３６】
図６は、本明細書に記載されているようなキャプチャゲートの機能性と一致する入力を処理するための方法（６００）の一実施形態を示すブロックの流れ図である。ブロック（６０２）により、入力が入力機構から受信される。入力は、ユーザーインターフェースコントロールを対象にしている。ブロック（６０４）により、キャプチャゲートステータスがユーザーインターフェースコントロールに割り当てられるか否かに関する決定が実行される。最終的に、ブロック（６０６）によると、例えば、以前の決定に基づいて、入力機構が、ユーザーインターフェースコントロールにキャプチャされるか又はキャプチャされない。当然のこととして、この最終決定の一部は、１つ以上の異なる入力機構が既に、ユーザーインターフェースコントロールにキャプチャされているか否かに依存し得、適切なキャプチャゲートステータスに関連するパラメーターにも依存し得る。
【００３７】
図７は、本実施形態が実装され得る適切な計算システム環境（７００）の例を示す。計算システム環境（７００）は、適切な計算環境の一例に過ぎず、利用性又は機能性の範囲に関し、いかなる制限を提示することも意図されていない。計算環境（７００）は、例示的な動作環境（７００）において示されているコンポーネントの任意の１つ又はその組み合わせに関して、いかなる依存関係も要求も有するものとして解釈されるべきでない。
【００３８】
実施形態は、いくつもの別の汎用又は特定用途の計算システム環境又は構成を用いて作動する。本明細書において開示されている実施形態を用いて使用するために適切であるよく知られている計算システム、環境及び／又は構成の例は、パーソナルコンピューター、サーバーコンピューター、携帯用又はラップトップ装置、マルチプロセッサーシステム、マイクロプロセッサーベースシステム、セットトップボックス、プログラマブル家電、ネットワークＰＣ、ミニコンピューター、メインフレームコンピューター、電話システム、前述のいくつかのシステム又は装置などを含む分散計算環境、を限定しないが含む。
【００３９】
本実施形態は、計算機によって実行されるプログラムモジュールのような計算機が実行可能な命令に関する一般的な文脈で説明され得る。一般に、プログラムモジュールは、特定のタスクを実行するか又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。当業者は、任意の計算機可読媒体形式で書き込まれ得るプロセッサー実行可能命令として本明細書に提供されている説明及び図面を実装し得る。
【００４０】
本実施形態は、通信ネットワークを介し接続されているリモート処理装置によってタスクが実行される分散計算環境においても実施され得る。分散計算環境において、プログラムモジュールは、メモリー記憶装置を含むローカル及びリモート計算機記憶媒体双方に配置され得る。
【００４１】
図７を参照すると、本実施形態を実装するための例示的なシステムは、計算機（７１０）形式の汎用計算装置を含む。計算機（７１０）のコンポーネントは、処理ユニット（７２０）、システムメモリー（７３０）、及びシステムメモリーを含む様々なシステムコンポーネントを処理ユニット（７２０）と接続するシステムバス（７２１）を含むがこれらに限定しない。システムバス（７２１）は、メモリーバス又はメモリーコントローラーを含むいくつかの任意タイプのバス構造、周辺機器用バス、及び様々なバスアーキテクチャのいくつかを使用するローカルバスであり得る。制限ではなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ機器に関する標準化団体（ＶＥＳＡ）ローカルバス、及びメザニンバスとしても知られている周辺機器相互接続（ＰＣＩ）バスを含む。
【００４２】
計算機（７１０）は、一般に、様々な計算機可読媒体を含む。計算機可読媒体は、計算機（７１０）によってアクセスされ得る利用可能な任意の媒体であり得、揮発性及び不揮発性双方の媒体、及び取り外し可能及び取り外し不可能な双方の媒体を含む。制限ではなく例として、計算機可読媒体は、計算機記憶媒体及び通信媒体を含み得る。計算機記憶媒体は、計算機可読命令、データ構造、プログラムモジュール、又は他のデータなど情報の記憶に関する任意の方法又は技術で実装される揮発性及び不揮発性双方、及び取り外し可能及び取り外し不可能な双方の媒体を含む。計算機記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリー、又は他のメモリー技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、又は他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、又は他の磁気記憶装置、又は所望の情報をストアするために使用され得、計算機（７１０）によってアクセスされ得る他の任意の媒体を含むがこれらに限定しない。通信媒体は、一般に、計算機可読命令、データ構造、プログラムモジュール、又は搬送波又は別の移送機構のような変調データ信号で他のデータを具現するものであって、任意の情報伝達媒体を含む。用語「変調データ信号」は、それに関する１つ以上の特徴セットを有する信号又は信号中の情報を符号化するための方法によって変更された信号を意味する。制限ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体、又は音響、無線（ＲＦ）、赤外線、及び別の無線媒体など無線媒体を含む。前述の任意の組み合わせも計算機可読媒体の範囲内に含まれよう。
【００４３】
システムメモリー（７３０）は、読み出し専用メモリー（ＲＯＭ）（７３１）及びランダムアクセスメモリー（ＲＡＭ）（７３２）のような揮発性及び／又は不揮発性メモリー形式の計算機記憶媒体を含む。起動中のように、計算機（７１０）内部のエレメント間の情報送信を支援する基本ルーチンを含む基本入出力システム（ＢＩＯＳ）（７３３）は、通常、ＲＯＭ（７３１）にストアされている。ＲＡＭ（７３２）は、通常、処理ユニット（７２０）によって直接にアクセス可能な及び／又は現在作動されている、データ及び／又はプログラムモジュールを含む。制限ではなく例として、図７は、オペレーティングシステム（７３４）、アプリケーションプログラム（７３５）、他のプログラムモジュール（７３６）、及びプログラムデータ（７３７）を示す。プログラム（７３５）は、１つ以上のユーザーインターフェース開発環境（１００）のコンポーネントを可能性として含むように示されていて、その実施形態を本明細書において詳細に説明する。これは、そのようなコンポーネントが実装され得る一例にすぎない。別の実装（例えば、プログラム（７４５）、オペレーティングシステム（７３４）、又はプログラム（７８５）の一部として）も本発明の範囲内で考慮されよう。
【００４４】
計算機（７１０）は、別の取り外し可能／取り外し不可能、揮発性／不揮発性の計算機記憶媒体も含み得る。例に過ぎないが図７は、取り外し不可能、不揮発性磁気媒体から読み出すか又はそれに書き込むハードディスクドライブ（７４１）、取り外し可能、不揮発性磁気ディスク（７５２）から読み出すか又はそれに書き込む磁気ディスクドライブ（７５１）、ＣＤ−ＲＯＭ、又は他の光媒体のような取り外し可能、不揮発性光ディスク（７５６）から読み出すか又はそれに書き込む光ディスクドライブ（７５５）を示す。例示的な動作環境において使用され得る別の取り外し可能／取り外し不可能、揮発性／不揮発性の計算機記憶媒体は、磁気テープカセット、フラッシュメモリーカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭ等を含むがこれらに限定しない。ハードディスクドライブ（７４１）は、通常、インタフェース（７４０）のような取り外し不可能メモリーインタフェースを介しシステムバス（７２１）と接続され、磁気ディスクドライブ（７５１）及び光ディスクドライブ（７５５）は、通常、インターフェース（７５０）のような取り外し可能メモリーインタフェースによってシステムバス（７２１）と接続される。
【００４５】
前述された図７に例示されているドライブ及びそれらに関連する計算機記憶媒体が、計算機（７１０）に計算機可読命令、データ構造、プログラムモジュール、及び他のデータの記憶装置を提供する。図７においては、例えばハードディスクドライブ（７４１）は、オペレーティングシステム（７４４）、アプリケーションプログラム（７４５）、他のプログラムモジュール（７４６）、及びプログラムデータ（７４７）をストアするように例示されている。これらのコンポーネントが、オペレーティングシステム（７３４）、アプリケーションプログラム（７３５）、他のプログラムモジュール（７３６）、及びプログラムデータ（７３７）と同一か又は異なるいずれかであり得ることに留意されたい。オペレーティングシステム（７４４）、アプリケーションプログラム（７４５）、他のプログラムモジュール（７４６）、及びプログラムデータ（７４７）には、異なる複製物であることを最小限に示すために、本明細書において、異なる番号を付与する。
【００４６】
ユーザーは、キーボード（７６２）、マイクロフォン（７６３）のような入力装置、及びマウス、トラックボール又はタッチパッドのようなポインティングデバイス（７６１）を介し、計算機（７１０）へコマンド及び情報を入力し得る。別の（示されていない）入力装置は、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含み得る。これら及び他の入力装置は、多くの場合、システムバスに接続されるユーザー入力インターフェース（７６０）を介し処理ユニット（７２０）と接続されるが、パラレルポート、ゲームポート又はユニバーサルシリアルバス（ＵＳＢ）のような別のインターフェース及びバス構造によっても接続され得る。モニター（１９１）又は別のタイプの表示装置もビデオインターフェース（７９０）のようなインターフェースを介し、システムバス（７２１）と接続される。モニターに加えて計算機は、スピーカー（複数）（７９７）及び出力周辺インターフェース（７９０）を介し接続され得るプリンター（７９６）のような他の周辺出力装置も含み得る。
【００４７】
計算機（７１０）は、リモート計算機（７８０）のような１つ以上のリモート計算機との論理接続を使用し、ネットワーク接続環境において作動し得る。リモートコンピューター（７８０）は、パーソナルコンピューター、携帯用計算機、サーバー、ルーター、ネットワークＰＣ、ピア装置、又は他の一般的なネットワークノードであり得、通常、前述された計算機（７１０）に関連するエレメントの大多数又はすべてを含む。図７に示されている論理的な接続は、ローカルエリアネットワーク（ＬＡＮ）（７７１）及び広域ネットワーク（ＷＡＮ）（７７３）を含むが、別のネットワーク（複数）も含み得る。そのようなネットワーク環境は、オフィス、企業規模の計算機ネットワーク、イントラネット、及びインターネットにおいて一般的である。計算機（７１０）は、ＬＡＮネットワーク環境において使用されるとき、ネットワークインターフェース又はアダプター（７７０）を介しＬＡＮ（７７１）と接続される。計算機（７１０）は、通常、ＷＡＮネットワーク環境において使用されるとき、インターネットのようなＷＡＮ（７７３）を介する通信を確立するためのモデム（７７２）又は別の手段を含む。内蔵又は外付けであり得るモデム（７７２）が、ユーザー入力インターフェース（７６０）又は別の適切な装置を介し、システムバス（７２１）と接続され得る。ネットワーク接続環境において、計算機（７１０）又はその一部に関連し示されているプログラムモジュールが、リモートメモリー記憶装置にストアされ得る。制限ではなく例として、図７は、リモートコンピューター（７８０）に常駐するリモートアプリケーションプログラム（７８５）を示す。表示されているネットワーク接続が例示的であって、計算機間の通信リンクを確立する別の手段が使用され得ることを十分に理解されよう。
【００４８】
主題が構造上の特徴及び／又は方法動作に特定の言語で説明されているが、添付の請求項において定義されている主題が、必ずしも前述の特定の機能又は動作に限定されるわけではないことを理解されよう。もっと正確に言えば、前述された特定の機能及び動作は、請求項を実装する例の形式として開示されている。
【符号の説明】
【００４９】
１００  計算機プログラミング環境
１０１  プログラマー
１０２  ユーザーインターフェースフレームワーク
１０４  多重キャプチャコンポーネント
１０５  アプリケーションプログラムインターフェース
１０６  キャプチャゲートコンポーネント
１０７  アプリケーションプログラムインターフェース
１１０  ユーザーインターフェース
１１２  ユーザーインターフェースコントロール
１２０  ユーザー（単数又は複数）
１２２  入力機構
１２４  入力機構
１２６  入力機構
２００  ユーザーインターフェース
２０２  ボタン（複数）
２０４  パレットエリア
２０６  スクロールバー
２０８  スプリッター
２１０  グループボックス
７００  計算システム環境
７１０  計算機
７２０  処理ユニット
７２１  システムバス
７３０  システムメモリー
７３１  読み出し専用メモリー
７３２  ランダムアクセスメモリー
７３３  基本入出力システム
７３４  オペレーティングシステム
７３５  アプリケーションプログラム
７３６  他のプログラムモジュール
７３７  プログラムデータ
７４０  インターフェース
７４１  ハードディスクドライブ
７４４  オペレーティングシステム
７４５  アプリケーションプログラム
７４６  他のプログラムモジュール
７４７  プログラムデータ
７５０  インターフェース
７５１  磁気ディスクドライブ
７５２  取り外し可能な不揮発性磁気ディスク
７５５  光ディスクドライブ
７５６  取り外し可能な不揮発性光ディスク
７６０  ユーザー入力インターフェース
７６１  ポインティングデバイス
７６２  キーボード
７６３  マイクロフォン
７７０  アダプター
７７１  ローカルエリアネットワーク
７７２  モデム
７７３  広域ネットワーク
７８０  リモート計算機
７８５  プログラム
７９０  ビデオインターフェース
７９１  モニター
７９５  出力周辺インターフェース
７９６  プリンター
７９７  スピーカー
【図１】
0005491388.tif 000002
【図２】
0005491388.tif 000003
【図３】
0005491388.tif 000004
【図４】
0005491388.tif 000005
【図５】
0005491388.tif 000006
【図６】
0005491388.tif 000007
【図７】
0005491388.tif 000008