2008-09-17 11 views
0

私はVC++/Win32/MFCでレガシープロジェクトに取り組んでいます。最近では、アプリケーションがタブレットPCで動作することが要件となっており、これにより多数の新しい問題が発生しました。 私はこれらの問題に取り組むことができました。ですが、私はいくつかの専門家の提案を使用することができます。スタイラスがタブレットPCで「持ち上げられる」とはどうなりますか?

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

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

だから、有形の質問は以下のとおりです。

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

おかげで、 EE

+0

私は残念ながら、ここで最も低い共通分母に対応しなければなりません。ユーザーの90%はXP(またはそれ以前)になりますので、検出と機能性はほとんどがWindows APIから来て、デスクトップユーザーに干渉しないようにする必要があります。 – el2iot2

答えて

1

タブレットユーザーとして、私はあなたの質問のいくつかに答えることができます。

まず:スタイラスは仮想キーボード上のキーを押してフォーカスされたウィンドウの外に追う必要があるとき

あなたは非常に簡単に画面上の「キーボードフォーカス」を維持することはできません。

私が使ったバーチャルキーボードのほとんど(ubuntuのWindowsタブレット入力パネルとubuntuの1つ)は、入力中のプログラムが「キーボードフォーカス」を維持できるようにします。

スタイラス「持ち上げ」が発生するとどうなりますか?プレス?

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

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

上記のように、圧力値を得ることができれば、それを使用することができます。

あなたの開発用PCがデスクトップの場合、これをテスト/エミュレートするにはどうすればよいでしょうか?私はここで盲目に飛んでいますか? (私は唯一のタブレットPCに定期的にアクセスを持っている)

スタイラスは、他の場所でポインタ変化のグローバル座標を下に配置され、そう、あなたが変更することを可能にするもので、突然のポインタの動きをエミュレートすることができた場合グローバルポインタ値。

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

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

希望しました。

+0

これは従来のアプリケーションなので、カーソルがアクティブなウィンドウを離れるのを監視し、それに基づいてツール状態を変更したコードがありました。これは "キーボードフォーカス"の問題の一部かもしれませんが、私はその部分をすでに解決しています。圧力レベルを取得するためのAPI呼び出しのアイデア – el2iot2

0

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

さらに、一般的なマウスだけで説明したバグを再現することができます。できるだけ早くマウスを動かしてみてください。一度にいくつかのピクセルをほぼ確実に飛び越えるでしょう。マウスの設定が最高のポインタ速度に設定されている場合は、数十または数百にもなります。 1回の更新で、マウスは100,100になるかもしれません。次回のアップデートでは、200,300になる可能性があります。

+0

私の経験では、「速いマウス移動」と同じではないようです(バグが再現されたマシン上)。正しく覚えていれば、画面からカーソルが効果的に消えてしまいます。 – el2iot2

0

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

"ProximityEvents"

は、ほとんどの場合、これらのイベントWT_PROXIMITYは(を参照してください。http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html)ウィンドウでavaliableありますyou`ll

0

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

Microsoft Windows XP Tablet PC Edition用のSDKがあり、圧力などの特別な情報を得ることができるようです。しかし、私は、既存の非タブレット対応アプリケーションとの標準互換性があることを認識しています。私は、Spy ++をタブレットにインストールし、特定のメッセージやイベントをフィルタリングしようとすることができます。

関連する問題