0

のレガシー プロジェクトに取り組んでいますVC++/Win32/MFC。最近では、アプリケーションがタブレット PCで動作することが要件となり、これにより多くの新しい問題が発生しました。私はこれらの問題に取り組み、これらの問題を回避することができましたが、いくつかの専門家の提案を使用できる問題が残っています.

アクティブ サーフェスからスタイラスを「持ち上げる」ことによって引き起こされる特定のバグがあります。基本的に、マウスカーソルが消えてから、画面に「押す」と再び表示されます。

これがアプリケーションで説明されていないことは理にかなっています。デスクトップ PC ではカーソルを持ち上げることができません。だから私が探しているのは、リフトが発生したときに何が起こるか (Windows メッセージなどに関して) の概要です。これは、フォーカスの変更とマウスオーバー イベントだけに変換されますか? 私のバグには、カーソルの変更も含まれているようです (ただし、リフトに関連していない可能性があります)。確かに予期しない「リフト」は、アプリケーションのツール処理の状態を壊しています。

したがって、具体的な質問は次のとおりです。

  1. スタイラスの「浮き」が発生するとどうなりますか? プレス?
  2. これを検出するために使用できる API 呼び出しは何ですか? フラグ/値が設定された標準メッセージに変換されるだけですか?
  3. 開発用 PC がデスクトップの場合、これをテスト/エミュレートする良い方法は何ですか? 私はここで盲目的に飛んでいますか?(タブレット PC には定期的にしかアクセスできません)
  4. タブレット スタイラス認識の正しい動作またはベスト プラクティスを表すものはどれですか?

ご検討いただきありがとうございます。

4

4 に答える 4

1

タブレット ユーザーとして、いくつかの質問にお答えします。

初め:

仮想キーボードのキーを押すためにスタイラスがフォーカスされたウィンドウの外に出なければならない場合、ウィンドウに「キーボード フォーカス」を維持することは非常に簡単ではありません。

私が使用したほとんどの仮想キーボード (Windows タブレットの入力パネルと ubuntu の下の 1 つ) では、入力しているプログラムで「キーボード フォーカス」を維持できます。

スタイラスの「浮き」が発生するとどうなりますか? プレス?

Windows では、圧力値が低下しますが、それ以外ではイベントはありません。(Linuxについてはわかりません。)

これを検出するために使用できる API 呼び出しは何ですか? フラグ/値が設定された標準メッセージに変換されるだけですか?

前述のように、圧力値を取得できる場合は、それを使用できます。

開発用 PC がデスクトップの場合、これをテスト/エミュレートする良い方法は何ですか? 私はここで盲目的に飛んでいますか?(タブレット PC には定期的にしかアクセスできません)

スタイラスを別の場所に置くと、ポインターのグローバル座標が変化するため、グローバル ポインターの値を変更できるものであれば、突然のポインターの動きをエミュレートできます。(Java の Robot クラスを使用すると、これがかなり簡単になります。)

タブレット スタイラス認識の正しい動作またはベスト プラクティスを表すものはどれですか?

Microsoft の意見を読むことをお勧めします。MSDN Web サイトには優れた記事が多数あります。( http://msdn.microsoft.com/en-us/library/ms704849(VS.85).aspx ) アプリケーションのボタンのサイズによって大きな違いが生じることを指摘しておきます。

これがお役に立てば幸いです。

于 2008-09-17T06:36:51.027 に答える
0

Windows では、圧力値が低下しますが、それ以外ではイベントはありません。(Linuxについてはわかりません。)

Linux では、「ProximityEvents」を取得します。

ほとんどの場合、これらのイベント WT_PROXIMITY は Windows で使用できます ( http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.htmlを参照してください) 。

于 2008-09-17T07:59:13.340 に答える
0

@Greg - 明確化、これはタブレットとスタイラスが組み込まれたラップトップ pc です。デバイスには専用キーボードがなく (タッチスクリーン上の仮想キーボード)、wacom 入力デバイスではありません。混乱させて申し訳ありません。

Microsoft Windows XP Tablet PC Edition 用のSDKがあり、圧力などの特別な詳細を取得できる可能性があるようです。ただし、既存の非タブレット対応アプリケーションとの標準的な互換性がある程度必要であることはわかっています。タブレットに Spy++ をインストールして、特定のメッセージ/イベントに絞り込むことができると思います。

于 2008-09-17T08:25:46.897 に答える
0

私が理解しているように、「リフト」イベントはありません。唯一のイベントは、スタイラスが後で画面に戻されたときに発生します。もちろん、これは特定のドライバーなどに依存します。

さらに悪いことに、あなたが説明したバグは、典型的なマウスだけで再現できる可能性があります. マウスをできるだけ速く動かしてみてください。ほとんどの場合、一度に数ピクセルジャンプします。ポインタの速度が最高になるようにマウス設定を構成している場合は、数十または数百にもなります。1 回の更新で、マウスが 100,100 になっている可能性があります。次の更新では、200,300 になる可能性があります。

于 2008-09-17T06:40:38.410 に答える