IInkCursor
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
タブレットのカーソルに関する一般的な情報を表します。
解説(Remarks)
IInkCursor オブジェクトは、ユーザーが手に持つ物理的なペンを表します。物理的なペンは、通常の先端と消しゴム側の先端のように複数のペン先を持つ場合があり、各ペン先はそれぞれ異なる IInkCursor オブジェクトに対応します。Tablet PC によっては複数のペンを使用できます。各カーソルには、システム上で一意な識別子が関連付けられています。Tablet PC でのペンの利用方法の詳細については、「Pen Input, Ink, and Recognition」を参照してください。
既知のカーソルには、ペンの色を赤にするか青にするかといった特定の描画属性のセットを割り当てることができます。また、カーソルは 0 個以上の IInkCursorButton オブジェクトのコレクションを保持します。
カーソルは、InkCollector オブジェクト、InkOverlay オブジェクト、または InkPicture コントロールのスコープ内でのみ存在します。これらのオブジェクトが新しいカーソルを検出すると、newCursor パラメーターを TRUE に設定して CursorInRange イベントを発生させます。これにより、カーソルが最初に検出された時点で、描画属性などのプロパティをアプリケーション内で設定できます。Cursors プロパティには、そのオブジェクトまたはコントロールが検出したカーソルのコレクションが格納されます。
IInkCursor を明示的に構築することはできません。代わりに、イベントから取得するか、InkCollector オブジェクト、InkOverlay オブジェクト、または InkPicture コントロールの Cursors プロパティから IInkCursor を取得します。
このインターフェイスを実装するクラスを独自に定義した場合、その新しいクラスは Tablet PC のアプリケーション プログラミング インターフェイス (API) と正しく連携しません。
メソッド 7
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
オブジェクトの名前を取得します。(IInkCursor.get_Name)
| Name | LPWSTR* | out | カーソル(ペン)の名前を文字列で受け取るポインタである。 |
解説(Remarks)
特定のメッセージ ハンドラー内でこのプロパティにアクセスすると、内部の関数が再入され、予期しない結果を招くことがあります。次のメッセージを処理する際は、再入呼び出しを行わないよう注意してください: WM_ACTIVATE、WM_ACTIVATEAPP、WM_NCACTIVATE、WM_PAINT、wParam が SC_HOTKEY または SC_TASKLIST に設定されている場合の WM_SYSCOMMAND、および WM_SYSKEYDOWN (Alt-Tab や Alt-Esc のキーの組み合わせを処理する場合)。これはシングルスレッド アパートメント モデルのアプリケーションで発生する問題です。
オブジェクトの識別子を取得します。(IInkCursor.get_ID)
| Id | INT* | out | カーソルを一意に識別する ID を受け取るポインタである。 |
解説(Remarks)
オブジェクトの識別子が変化することはありません。
カーソルがペンの反転側の先端であるかどうかを示す値を取得します。
| Status | VARIANT_BOOL* | out | カーソルが反転状態(ペンの消しゴム側)であるかどうかを受け取る VARIANT_BOOL へのポインタである。 |
解説(Remarks)
反転したカーソルは、一般に消去操作に関連付けられます。ペンによっては、一方の端が描画用、もう一方の端が消去用として設計されている場合があります。インクの消去の詳細については、「Erasing Ink with the Pen」を参照してください。
Inverted プロパティを使用するかどうかは、完全にアプリケーションの必要性次第です。アプリケーションが反転したカーソルを調べる必要はなく、ink collector は反転していないカーソルと同様に、反転したカーソルにも既定の描画属性を適用します。
インクの描画時に適用される描画属性を取得または設定します。(IInkCursor.get_DrawingAttributes)
| Attributes | IInkDrawingAttributes** | out | このカーソルに関連付けられた現在の描画属性を受け取るポインタである。 |
解説(Remarks)
描画属性はストロークの外観を指定します。たとえば、ペンのスタイルや色を指定できます。
カーソルは、接触した InkCollector ごとに異なる描画属性を持つことができます。カーソルに描画属性を指定しない場合は、InkCollector オブジェクトの既定の描画属性が使用されます。この既定の属性は、InkCollector オブジェクトの DefaultDrawingAttributes プロパティで設定します。
DrawingAttributes プロパティを続けて呼び出しても、変更されるのは新しいストロークの描画属性だけです。既に収集済みのストロークや収集中のストロークには適用されません。
インクの描画時に適用される描画属性を取得または設定します。
| Attributes | IInkDrawingAttributes* | inoptional | このカーソルに関連付ける描画属性オブジェクトへのポインタである。 |
解説(Remarks)
描画属性はストロークの外観を指定します。たとえば、ペンのスタイルや色を指定できます。
カーソルは、接触した InkCollector ごとに異なる描画属性を持つことができます。カーソルに描画属性を指定しない場合は、InkCollector オブジェクトの既定の描画属性が使用されます。この既定の属性は、InkCollector オブジェクトの DefaultDrawingAttributes プロパティで設定します。
DrawingAttributes プロパティを続けて呼び出しても、変更されるのは新しいストロークの描画属性だけです。既に収集済みのストロークや収集中のストロークには適用されません。
カーソルが属する IInkTablet オブジェクト、またはオブジェクトやコントロールが現在入力の収集に使用している IInkTablet オブジェクトを取得します。(IInkCursor.get_Tablet)
| Tablet | IInkTablet** | out | このカーソルが属するタブレット オブジェクトを受け取るポインタである。 |
解説(Remarks)
インクを収集するオブジェクトまたはコントロールの場合、このプロパティが有効なのは、そのオブジェクトまたはコントロールが単一のタブレットからインクを収集しているときだけです。すべてのタブレットからインクを収集しているオブジェクトまたはコントロールでこのプロパティにアクセスすると、例外が発生します。
特定のメッセージ ハンドラー内でこのプロパティにアクセスすると、内部の関数が再入され、予期しない結果を招くことがあります。次のメッセージを処理する際は、再入呼び出しを行わないよう注意してください: WM_ACTIVATE、WM_ACTIVATEAPP、WM_NCACTIVATE、WM_PAINT、wParam が SC_HOTKEY または SC_TASKLIST に設定されている場合の WM_SYSCOMMAND、および WM_SYSKEYDOWN (Alt-Tab や Alt-Esc のキーの組み合わせを処理する場合)。これはシングルスレッド アパートメント モデルのアプリケーションで発生する問題です。
IInkCursor で利用可能な IInkCursorButtons コレクションを取得します。
| Buttons | IInkCursorButtons** | out | このカーソルが備えるボタンのコレクションを受け取るポインタである。 |
解説(Remarks)
ペンの場合、ボタンには書き込み用のペン先、消しゴム側の先端、バレル ボタンが含まれることがあります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IInkCursor "{AD30C630-40C5-4350-8405-9C71012FC558}" #usecom global IInkCursor IID_IInkCursor "{}" #comfunc global IInkCursor_get_Name 7 var #comfunc global IInkCursor_get_Id 8 var #comfunc global IInkCursor_get_Inverted 9 var #comfunc global IInkCursor_get_DrawingAttributes 10 sptr #comfunc global IInkCursor_putref_DrawingAttributes 11 sptr #comfunc global IInkCursor_get_Tablet 12 sptr #comfunc global IInkCursor_get_Buttons 13 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IInkCursor "{AD30C630-40C5-4350-8405-9C71012FC558}" #usecom global IInkCursor IID_IInkCursor "{}" #comfunc global IInkCursor_get_Name 7 sptr #comfunc global IInkCursor_get_Id 8 sptr #comfunc global IInkCursor_get_Inverted 9 sptr #comfunc global IInkCursor_get_DrawingAttributes 10 sptr #comfunc global IInkCursor_putref_DrawingAttributes 11 sptr #comfunc global IInkCursor_get_Tablet 12 sptr #comfunc global IInkCursor_get_Buttons 13 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。