システム イベントとマウス メッセージ
アプリケーションには、Microsoft Windows のマウス メッセージとシステム イベントの両方を送信することで、タブレット ペンの最適な設計と使用方法が組み込まれています。 アプリケーションは、ペンの動きまたはアクションごとに両方のイベント セットを受け取ります。 その後、アプリケーションは、アクションのコンテキストに基づいて、使用する適切なイベントを選択します。 Windows マウス メッセージは、アクティビティのポイントと選択に適しており、ユーザー インターフェイス (UI) 要素との対話を伴うアクティビティに使用する必要があります。 ペン イベントは、リアルタイムのインク アプリケーション、ペン アクション、手書きに適しています。
手記
ペン イベントとマウス メッセージの両方が、ペンとマウスのどちらが使用されているかに関係なく、アプリケーションに送信されます。
ペン入力とマウスとタッチの区別
アプリケーションがマウス メッセージ (WM_LBUTTONDOWN など) を受信すると、GetMessageExtraInfo 関数を呼び出して、メッセージがペンまたはマウス デバイスから送信されたかどうかを評価できます。
GetMessageExtraInfo から返される値は、0xFFFFFF00に対してマスクチェックしてから、0xFF515700と比較する必要があります。 次の定義により、これが明確になる場合があります。
#define MI_WP_SIGNATURE 0xFF515700
#define SIGNATURE_MASK 0xFFFFFF00
#define IsPenEvent(dw) (((dw) & SIGNATURE_MASK) == MI_WP_SIGNATURE
比較が true の場合、このマウス メッセージはタブレット PC ペンまたはタッチ スクリーンによって生成されました。 それ以外の場合は、このメッセージがマウス デバイスによって生成されたと見なすことができます。
GetMessageExtraInfo から返される下位 8 ビットは変数です。 これらのビットのうち、7 (下位 7、0x7Fでマスク) は、カーソル ID、マウスの場合は 0、ペン ID の場合は変数値を表すために使用されます。 さらに、Windows Vista では、タッチ入力とペン入力 (0 = ペン、1 = タッチ) を区別するために、0x80でマスクされた 8 番目のビットが使用されます。
詳細については、「ポインター デバイス入力 とタッチ入力 する」を参照してください。
サポートされているシステム ジェスチャ
次の表は、Windows XP Tablet PC Edition に現在含まれているシステム ジェスチャの一覧、対応するペン アクションとシステム イベントの詳細、および従来のマウス 操作との関係を示しています。
ペン ジェスチャ | マウス アクション | ペン ジェスチャの説明 | イベント メッセージ | マウス メッセージ | Windows ベースのアプリケーションでの動作 |
---|---|---|---|---|---|
蛇口 |
左クリック |
ペンで画面を 1 回タップします。 |
ISG_TAPペンが持ち上げられたときに送信されます。 |
ペンを持ち上げると、WM_LBUTTONDOWNとWM_LBUTTONUPが送信されます。 |
メニューまたはツール バーからコマンドを選択し、コマンドが選択されている場合はアクションを実行し、挿入ポイント (IP) を設定し、選択フィードバックを表示します。 |
ダブルタップ |
ダブルクリック |
連続して画面を 2 回タップします。 |
ISG_DOUBLETAP 2 回目のタップ (下) で送信されます。 ISG_TAP最初のタップで送信されたイベントです。 |
WM_LBUTTONDBLCLK 2 回目のタップ (ダウン) で送信されます。 WM_LBUTTONDOWNとWM_LBUTTONUPは、1 回のタップの場合と同様に、最初のタップ (上) で送信されます。 |
Word を選択し、ファイルまたはフォルダーを開きます。 |
長押し |
右クリック |
画面をタップし、マウス アイコンが表示されるまで長押しし、ペンを離してショートカット メニューを表示します。 アプリケーションは、ペンが持ち上げられたときに右クリック メニューを表示する操作とは異なるアクションを実行することを選択できます。 |
ISG_HOLDENTERペンが十分に長くダウンしたときに送信されます。 ISG_RIGHTTAPペンが持ち上げられ、右クリックが発生したときに送信されます。 |
右クリックが発生したときに送信されるWM_RBUTTONDOWNとWM_RBUTTONUP (ペンが持ち上げられたときに)。 |
ショートカット メニューを表示します。 |
Hold-through |
左クリック |
画面をタップし、マウス アイコンが表示されて消えるまで長押しします。 ユーザーは、誤って長押しし、タップするだけで戻したい場合に、これを行う可能性があります。 |
ISG_TAPペンが持ち上げられたときに送信されます。 |
ペンを持ち上げると、WM_LBUTTONDOWNとWM_LBUTTONUPが送信されます。 |
長い間左クリックします。 マウスに相当するものは存在しません。 これは、ユーザーが長い間長押しを実行する場合のフォールバックです。 イベントはタップに戻ります。 |
ドラッグ |
左ドラッグ |
画面をタップして移動するオブジェクトを選択し、オブジェクトを選択した後にドラッグします。 |
ドラッグの開始時に送信ISG_DRAG。 |
WM_LBUTTONDOWNドラッグの開始時に送信され、その後に一連のマウス移動メッセージが続き、その後にWM_LBUTTONUPイベントが送信されます。 |
IP で始めるときに Microsoft Word のようにドラッグして選択します。複数の単語を選択します。Windows でオブジェクトをドラッグするときと同様に、ドラッグします。スクロール。 |
長押しした後、ドラッグ |
右ドラッグ |
画面をタップして、移動するオブジェクトを選択します。 マウス アイコンが表示されるまで長押しし、ドラッグしてオブジェクトを移動します。 ペンを離してショートカット メニューを表示します。 |
ISG_HOLDENTERペンがしばらくダウンしたときに送信されます。 ドラッグの開始時に送信ISG_RIGHTDRAG。 |
WM_RBUTTONDOWNドラッグの開始時に送信され、その後に一連のマウス移動メッセージが続き、その後にWM_RBUTTONUPイベントが送信されます。 |
オブジェクトまたは選択範囲をドラッグした後にコンテキスト メニューをドラッグする場合と同様にドラッグします。 |
ペンホバー |
マウス ホバー |
画面から少し離れた場所でペンを固定します。 |
ISG_HOVERENTERイベントが最初に送信されます。 ホバー間隔が完了すると、ISG_HOVERLEAVEis送信されます。 |
同等のマウス メッセージはありません。 |
ツールヒント、ロールオーバー効果、およびその他のマウス ホバー動作を表示します。 |
空中シェイク |
タブレット PC 入力パネル 表示。 マウスに相当するものはありません。 |
ペンを左右にすばやく移動し、上の先端を押しながら画面の範囲内に移動します。 |
イベントはアプリケーションに渡されません。 |
同等のマウス メッセージはありません。 |
タブレット PC に固有の新機能。 |
スタイラスとタッチ操作の指定
既定では、ウィンドウはすべてのシステム ジェスチャ イベントを受け取り、既定の対話モデルを使用します。 このモデルの一部がアプリケーションに干渉する可能性があるため、WndProc の WM_TABLET_QUERYSYSTEMGESTURESTATUS Message に応答することで、それらを選択的に無効にすることができます。