InkCollector
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
(フィールドなし)
公式ドキュメント
利用可能なタブレット デバイスからインクを取り込むために使用されるオブジェクトを表します。
透明なコントロール (WS_EX_TRANSPARENT プロパティが設定された GroupBox など) の背後に InkCollector コントロールを作成すると、InkCollector はインクを収集できなくなります。
InkCollector には次の種類のメンバーがあります。
イベント
InkCollector クラスには次のイベントがあります。
| イベント | 説明 |
|---|---|
| CursorButtonDown | InkCollector がカーソル ボタンが押されていることを検出したときに発生します。 |
| CursorButtonUp | InkCollector がカーソル ボタンが離されていることを検出したときに発生します。 |
| CursorDown | カーソルの先端がデジタイザー タブレットの表面に接触したときに発生します。 |
| CursorInRange | カーソルがタブレット コンテキストの物理的な検出範囲 (近接範囲) に入ったときに発生します。 |
| CursorOutOfRange | カーソルがタブレット コンテキストの物理的な検出範囲 (近接範囲) から外れたときに発生します。 |
| DoubleClick | InkCollector オブジェクトがダブルクリックされたときに発生します。 |
| Gesture | アプリケーション固有のジェスチャが認識されたときに発生します。 |
| MouseDown | マウス ポインターが InkCollector オブジェクトの上にある状態でマウス ボタンが押されたときに発生します。 |
| MouseMove | マウス ポインターが InkCollector オブジェクトの上を移動したときに発生します。 |
| MouseUp | マウス ポインターが InkCollector オブジェクトの上にある状態でマウス ボタンが離されたときに発生します。 |
| MouseWheel | InkCollector オブジェクトがフォーカスを持っている間にマウス ホイールが動いたときに発生します。 |
| NewInAirPackets | 空中 (in-air) パケットが検出されたときに発生します。これは、ユーザーがタブレットの近くでペンを動かし、カーソルが InkCollector オブジェクトのウィンドウ内にある場合、または InkCollector オブジェクトに関連付けられたウィンドウ内でユーザーがマウスを動かした場合に起こります。 |
| NewPackets | InkCollector オブジェクトがパケットを受信したときに発生します。 |
| Stroke | ユーザーがいずれかのタブレット上で新しいストロークの描画を終了したときに発生します。 |
| SystemGesture | システム ジェスチャが認識されたときに発生します。 |
| TabletAdded | Tablet がシステムに追加されたときに発生します。 |
| TabletRemoved | Tablet がシステムから削除されたときに発生します。 |
インターフェイス
InkCollector クラスは次のインターフェイスを定義します。
| インターフェイス | 説明 |
|---|---|
| IInkCollector | このオブジェクトは IInkCollector COM インターフェイスを実装します。 |
メソッド
InkCollector クラスには次のメソッドがあります。
| メソッド | 説明 |
|---|---|
| GetEventInterest | 特定の InkCollector オブジェクト イベントの現在の状態、つまりそのイベントがリッスンまたは使用されているかどうかを取得します。 |
| GetGestureStatus | InkCollector オブジェクトが特定のジェスチャに関心を持っているかどうかを取得します。 |
| GetWindowInputRectangle | インクが描画されるウィンドウ矩形をピクセル単位で取得します。 |
| SetAllTabletsMode | このモードでは、InkCollector オブジェクトは Tablet PC に接続されている任意のタブレットからインクを収集できます。 |
| SetEventInterest | 特定のイベントをリッスンまたは使用するかどうかを示す値を変更します。 |
| SetGestureStatus | 既知のジェスチャに対する InkCollector オブジェクトの関心を変更します。 |
| SetSingleTabletIntegratedMode | このモードでは、InkCollector オブジェクトは 1 台のタブレットからのみインクを収集します。他のタブレットからのインクは InkCollector オブジェクトによって無視されます。 |
| SetWindowInputRectangle | 描画されたインクをウィンドウにマップするために使用するウィンドウ矩形をピクセル単位で変更します。 |
プロパティ
InkCollector クラスには次のプロパティがあります。
| プロパティ | アクセスの種類 | 説明 |
|---|---|---|
| AutoRedraw |
読み取り専用 |
ウィンドウが無効化されたときに InkCollector がインクを再描画するかどうかを指定する値を取得または設定します。 |
| CollectingInk |
読み取り専用 |
現在 InkCollector オブジェクト上でインクが描画されているかどうかを指定する値を取得します。 |
| CollectionMode |
読み取り専用 |
ユーザーが書き込む際にインク、ジェスチャ、またはその両方のいずれを認識するかを決定する収集モードを取得または設定します。 |
| Cursors |
読み取り専用 |
インクを描画する領域で使用できる Cursors コレクションを取得します。 |
| DefaultDrawingAttributes |
読み取り専用 |
インクの描画と表示に使用される描画属性を指定する、既定の InkDrawingAttributes オブジェクトを取得または設定します。 |
| DesiredPacketDescription |
読み取り専用 |
InkCollector オブジェクトに描画されたインクに関連付けられたパケットのどの要素に関心があるかを取得または設定します。 |
| DynamicRendering |
読み取り専用 |
インクが描画と同時にレンダリングされるかどうかを示す値を取得または設定します。 |
| Enabled |
読み取り専用 |
InkCollector オブジェクトがペン入力を収集するかどうかを指定する値を取得または設定します。 |
| Handle |
読み取り専用 |
InkCollector オブジェクトがアタッチされているウィンドウのハンドルを取得または設定します。 |
| Ink |
読み取り専用 |
InkCollector オブジェクトに関連付けられている InkDisp オブジェクトを取得または設定します。 |
| MarginX |
読み取り専用 |
x 軸方向のマージンをピクセル単位で取得または設定します。 |
| MarginY |
読み取り専用 |
y 軸方向のマージンをピクセル単位で取得または設定します。 |
| MouseIcon |
読み取り専用 |
現在のカスタム マウス アイコンを取得または設定します。 |
| MousePointer |
読み取り専用 |
マウスがオブジェクトの特定の部分の上にあるときに表示されるマウス ポインターの種類を示す値を取得または設定します。 |
| Renderer |
読み取り専用 |
インクの描画に使用される InkRenderer オブジェクトを取得または設定します。 |
| SupportHighContrastInk |
読み取り専用 |
システムがハイ コントラスト モードのときに、インクを単一の色でレンダリングするかどうかを指定する値を取得または設定します。 |
| Tablet |
読み取り専用 |
InkCollector オブジェクトが現在入力の収集に使用しているタブレット デバイスを取得します。 |
解説(Remarks)
このオブジェクトは、C++ で CoCreateInstance メソッドを呼び出すことによってインスタンス化できます。
InkCollector オブジェクトは、自身が関連付けられている特定のウィンドウに入力されたインクとジェスチャのみを収集します。InkCollector の唯一の目的は、ハードウェアから (たとえば IInkCursor オブジェクトや IInkTablet オブジェクトを介して) インクを収集し、アプリケーションに引き渡すことです。基本的には、分配されたインクを保持するコンテナーとして機能する 1 つまたは複数の InkDisp オブジェクトへインクを分配するソースとして動作します。
InkCollector を使用するには、これを作成し、描画されたインクをどのウィンドウで収集するかを指定して、有効にします。有効にした後は、次の 3 つのモードのいずれか 1 つだけで収集するように設定できます (モードは InkCollectionMode 列挙型で指定します)。
- InkOnly。IInkStrokeDisp オブジェクトが作成されます。
- GestureOnly。IInkGesture オブジェクトが作成されます。
- InkAndGesture。アプリケーションによるイベントの処理方法に応じて、ストローク、ジェスチャ、または場合によってはその両方が作成されます。
つまり、タブレットの範囲内にあるカーソルのすべての動きに対して、InkCollector は常にストロークまたはジェスチャのいずれかを収集し、場合によっては両方を収集します。ジェスチャのサポートは、Microsoft のジェスチャ認識エンジンを使用して組み込まれています。
InkCollector はすべてのタブレット入力を処理します。インクは、接続されているすべてのタブレット (マウスを含む) から同時に収集できます。IInkCursor オブジェクトおよび IInkCursorButton オブジェクトの変化によって、InkCollector オブジェクトがイベントを発生させることがあります。
また、InkCollector は、自身の存続期間中に検出したカーソルの一覧も管理します。InkCollector が新しいカーソルを検出すると、newCursor パラメーターに VARIANT_TRUE が設定された状態で CursorInRange イベントが発生します。アプリケーションは、新しいカーソルを管理するために InkCollector を使用します。
コンストラクターまたは SetWindowInputRectangle メソッドで設定された収集領域が重なっている場合でも、複数の InkCollector を特定のウィンドウ ハンドルに関連付けることができます。ただし、このシナリオが機能するのは、各 InkCollector が SetSingleTabletIntegratedMode を呼び出し、それぞれ固有のタブレットを使用する場合だけです。この動作により、タブレットごとに別々のオブジェクトへインクを格納することが容易になります。
有効になっている (Enabled プロパティで設定) InkCollector のウィンドウ入力矩形が、別の有効な InkCollector のウィンドウ入力矩形と重なる場合は、エラーが発生します。
任意の時点で入力矩形のうち 1 つだけが有効である限り、重なりが生じてもエラーにはなりません。
MouseDown、MouseMove、MouseUp、および MouseWheel の各イベントは、インク空間に関連付けられた HIMETRIC 単位ではなく、ピクセル単位で x 座標と y 座標を返します。これは、これらのイベントがペンに対応していないアプリケーションのマウス イベントを置き換えるものであり、そのようなアプリケーションはピクセルしか認識しないためです。
InkCollector オブジェクトは、UI スレッド以外のスレッドで安全に解放することはできません。
アプリケーションのパフォーマンスを向上させるため、InkCollector オブジェクトが不要になったら破棄してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)