IInkCursorButton
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
タブレットのポインティングおよび選択デバイス上のボタンに関する一般的な情報を表します。
解説(Remarks)
IInkCursor は 0 個から 32 個の関連付けられたボタンを持つことができ、これらのボタンは IInkCursorButton オブジェクトとしてアプリケーションに提供されます。カーソルボタンの例を次に示します。
- ペンの書き込み側の先端
- ペンの反転側 (「消しゴム」側) の先端
- ペンの軸 (バレル)
- ペンに付いているボタン
このインターフェイスを実装するクラスを独自に定義した場合、その新しいクラスは Tablet PC のアプリケーション プログラミング インターフェイス (API) と正しく連携しません。
メソッド 3
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
オブジェクトの名前を取得します。(IInkCursorButton.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 のキーの組み合わせを処理する場合)。これはシングルスレッド アパートメント モデルのアプリケーションで発生する問題です。
オブジェクトの識別子を取得します。(IInkCursorButton.get_Id)
| Id | LPWSTR* | out | カーソル ボタンを識別する ID を文字列で受け取るポインタである。 |
解説(Remarks)
オブジェクトの識別子は変化することはありません。
カーソルボタンの状態 (ボタンが使用不可、押されていない、押されている、のいずれであるかなど) を取得します。
| CurrentState | InkCursorButtonState* | out | ボタンの現在の状態(押下・アップなど)を受け取る InkCursorButtonState へのポインタである。 |
解説(Remarks)
使用できる状態値の詳細な一覧については、InkCursorButtonState 列挙型を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IInkCursorButton "{85EF9417-1D59-49B2-A13C-702C85430894}" #usecom global IInkCursorButton IID_IInkCursorButton "{}" #comfunc global IInkCursorButton_get_Name 7 var #comfunc global IInkCursorButton_get_Id 8 var #comfunc global IInkCursorButton_get_State 9 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IInkCursorButton "{85EF9417-1D59-49B2-A13C-702C85430894}" #usecom global IInkCursorButton IID_IInkCursorButton "{}" #comfunc global IInkCursorButton_get_Name 7 sptr #comfunc global IInkCursorButton_get_Id 8 sptr #comfunc global IInkCursorButton_get_State 9 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。