質問

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

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

これがアプリケーションでは考慮されていないのは当然です。あなたはできません リフト デスクトップ PC 上のカーソル。したがって、私が探しているのは、リフトが発生したときに何が起こるか (Windows メッセージなどの点で) についての適切な概要です。これは単にフォーカスの変更とマウスオーバー イベントを意味するのでしょうか?私のバグにはカーソルの変更も関係しているようです (ただし、リフトに関連していない可能性があります)。確かに、予期せぬ「リフト」により、アプリケーションのツール処理の状態が破壊されます。

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

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

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

役に立ちましたか?

解決

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

初め:

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

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

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

Windows では圧力値は低下しますが、それ以外では何も起こりません。(Linuxについては知りません。)

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

上で述べたように、圧力値を取得できれば、それを使用できます。

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

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

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

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

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

他のヒント

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

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

Windows では圧力値は低下しますが、それ以外では何も起こりません。(Linuxについては知りません。)

Linux では、「ProximityEvents」が表示されます。

おそらく、これらのイベント WT_PROXIMITY は Windows で利用可能です (以下を参照してください)。 http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html )

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top