マウス メッセージとシステム イベントのタイムライン
特定のアクションが実行されると、システム イベント (プレフィックスとして ISG_) がアプリケーションによってほぼ瞬時に送受信されます。 マウス メッセージ (プレフィックスは WM_) は、アクションが実行されるときに送信され、Microsoft Windows メッセージング サービスによってイベントが処理されるまでの時間が経過した後にアプリケーションによって受信されます。 また、CursorDown と CursorUp は、ペン ハードウェアから受け取るペン イベントです。 これらは、タブレット ペンが画面に触れたときと、それぞれ画面から持ち上げられたときに送信されます。
ペン イベントとマウス メッセージは同期されません。 対応するマウス メッセージとペン イベントが特定の順序で発生する保証はありません。 次のグラフは、送信されるシステムイベントとマウスイベントのシーケンスを示しています。ただし、常に予測可能であるとは限りません。 システム ジェスチャ イベントが検出されると、マウス イベントが遅延していることに注意してください。
ペン入力します
実装に関する重要な考慮事項
マウス メッセージとシステム イベント用に開発するときは、次の点を考慮してください。
- ペン イベントとマウス メッセージの両方が、ペンとマウスのどちらが使用されているかに関係なく、アプリケーションに送信されます。
- アプリケーションがペンメッセージとマウスメッセージの両方をリッスンする場合、メッセージの関係を予測することは困難であるため、最終的な動作を予測することは困難です。 ペン イベントとマウス メッセージは同期されません。 対応するマウス メッセージとペン イベント (WM_LBUTTONDOWNや ISG_TAP、WM_LBUTTONDBLCLKや ISG_DBLTAPなど) が特定の順序で発生する保証はありません。 これらのメッセージ間の関係は複雑です。
- 同じアプリケーション機能でマウス イベントとペン イベントを混在させないようにすることをお勧めします。 たとえば、CursorDown と MouseUp に応答するアプリケーション機能は、現在または今後のバージョンの Tablet PC SDK では期待どおりに動作しない可能性があります。
- 保留スルー イベント シーケンスの場合、シーケンスが完了する前にユーザーがタブレット ペンをドラッグした場合、送信されるイベントは左ドラッグに対応します。 たとえば、ドラッグが開始されると、ISG_DRAG とWM_LBUTTONDOWNが送信されます。 ペンが最終的に持ち上げられると、CursorUp とWM_LBUTTONUP が送信されます。 発生しているイベントの種類を判断する必要があるため、システム ジェスチャ イベントが直ちに発生しない可能性があります。
- 多くの場合、タブレット ペンを使用したダブルタップは、マウスによるダブルクリックよりも精度が低くなります。 これは、タブレット ペンでダブルタップを実行する固有の性質に由来します。 ユーザーはダブルタップを実行するためにタブレットペンを持ち上げる必要があるため、タップ間の時間は、多くの場合、ダブルクリックの対応する時間よりも長くなります。 さらに、タブレット ペンの 2 つのタップは、マウスの 2 回のクリックの場合よりもさらに離れた画面座標で発生する可能性があります。 これに対応するために、Windows XP Tablet PC Edition には、ダブルクリックのマウス設定とは別のダブルタップの 2 つのタップ間の時間的距離と空間距離の設定があります。 これらの設定は、コントロール パネルのタブレットとペンの設定で調整できます。
これらの考慮事項により、アプリケーションは両方ではなく 1 セットのメッセージのみをリッスンする必要があります。 ペン対応アプリケーションをビルドする場合は、システムメッセージとペンメッセージのみをリッスンします。 これらのメッセージは予測可能であり、タブレット ペンで適切に動作します。 ペン対応ではないアプリケーションをビルドする場合は、マウス メッセージのみをリッスンします。