Win7のスクリーンタッチについて話すAPI

  

Win7には、ウィンドウグループのプレビュー、デスクトップアイコンのクイック隠し、他のウィンドウの揺れ……など、XPやVistaシステムでは利用できないクールな機能がいくつかあります。設計されていますか?私たちが開発したパーソナルソフトウェアはこれらの機能をどのように使用してユーザーを驚かせますか

「マイノリティレポート」では、Tomgoは2本の指で直接タッチスクリーン上でプログラムを操作していましたが、これは厄介でした。この機能Win 7はまた、タッチデバイスがある限りサポートしています、我々はまたWin 7でコンピューターを再生するために手を使用することができます。ズーム、2本指ズーム、2本指フリップ、およびその他の効果などの2本指タッチは、Win 7で実装できます。

Win7でよく使われる2種類のタッチジェスチャー

1.ズームジェスチャー

ズームジェスチャーは、多くの場合、写真の閲覧や記事の閲覧などのプログラムで、インターフェイスをズームインまたはズームアウトするために使用されます。使用しました。 2本指ズームのジェスチャを図1に示します。2本の指を1本を上に向けて1本を下に向けてフォームに一緒に配置し、ズームインします。2本の指を別々にフォームに配置し、2点を中央でスライドさせます。縮小します。

プログラムはこのジェスチャを認識する必要があります最初のステップは、メッセージを指から画面に表示することです。第2のステップでは、2本の指の座標に従って距離が計算され、2本の指間の距離が経験値に従って比較され、2本の指が離れているかまたは2本の指が互いに接近している。第3段階では、タイマーによって指の位置の座標をリアルタイムで把握して移動方向と速度を計算することができ、さらに2本の指が逆スライドか逆スライドかを判断することができる。

2.パンジェスチャー

パンジェスチャーは、ナビゲーションによく使用されます。たとえば、画像ビューアでは、左のパンジェスチャを使用して前のジェスチャに移動し、パンのパンジェスチャを使用して次の画像に移動します。パンジェスチャを図2に示します。両方の指が左または右にスライドします。ユーザーが写真の位置を変更したいのか、ページをめくったのかを区別する方法は?ここでは加速度を使わなければなりません。

指の座標をリアルタイムでタイマーでキャプチャし、速度と加速度を計算し、それを実験値で加速度と比較します加速度が比較的大きい場合はページをめくると見なすことができ、そうでない場合はドラッグします。移動します。ドラッグするときは、プログラムの境界に到達したかどうかをさらに判断する必要があり、境界に到達した場合はページめくりと見なされます。ページめくりの処理については、素早く左に移動すること、または左の境界に達することは前のページと見なされる。

2本指タッチAPIが明らかにした
2本指タッチの中核は、元のタッチデータをモーションモデルに入れてユーザーのジェスチャーを計算することです。生のタッチデータはWM_TOUCHメッセージから取得できます。ズームとパンのジェスチャは、WM_TOUCHによって認識されます。

手順1:マルチタッチハードウェアの確認

ここでGetSystemMetrics APIを使用してハードウェアを準備します。

BYTE digitizerStatus =(BYTE)GetSystemMetrics(SM_DIGITIZER); ((digitizerStatus&(0x80 + 0x40))== 0){//マルチタッチデバイスを検出しない、またはデバイスの準備ができていない} //デバイスが複数のタッチポイントをサポートしていることを確認、現在のWin 7ペアに注意を払う必要があるBYTE nInputs =(BYTE)GetSystemMetrics(SM_MAXIMUMTOUCHES);

手順2:元のタッチメッセージに切り替える

デフォルトでは、Win 7はデフォルトでWM_GESTUREを提供します。 (ジェスチャー)メッセージこのジェスチャは、システムがオリジナルのタッチデータに基づいて認識するジェスチャであり、RegisterTouchWindow API関数を使用すると、WM_TOUCHのオリジナルのタッチ入力メッセージを返すことができます。コアコード:

RegisterTouchWindow(hWnd、0))//hwndは現在のウィンドウです。ハンドル

手順3:生のタッチデータを取得する

GetTouchInputInfo APIのコアコードを使用して元のタッチデータを取得する。

GetTouchInputInfo((HTOUCHINPUT)lParam、numInputs、ti、sizeof( 5本の指が同時に画面上をスライドしている場合、numInputsは5になります。 Tiは、接触のX座標とY座標、発生時刻、およびタッチの種類(マウスの押し、マウスの動き、マウスの離脱などに似ています)を含むTOUCHINPUT構造体です。

for(unsigned int i = 0; i< numInputs; ++ i){//(ti [i] .dwFlags&TOUCHEVENTF_DOWN){OnTouchDownHandler(hWnd、ti [i)の場合、タッチ入力点に従ってループする] //(ti [i] .dwFlags&TOUCHEVENTF_MOVE){OnTouchMoveHandler(hWnd、ti [i]); ////接触移動機能処理}に渡した場合(ti [i] .dwFlags&TOUCHEVENTF_UP){OnTouchUpHandler(hWnd、ti [i]);} //連絡先解除機能処理に渡される}

ここでは、連絡先の押下、移動、解除などが行われます。この関数は実際には運動シミュレーションモデルであり、接触の軌跡に対していくつかの運動曲線を生成し、各点の方位角、速度、法線加速度、接線加速度などを計算して識別する必要があります。具体的な仕草をする。

ヒント:マルチタッチをサポートする最も簡単な方法は、主に次のAPIを使用して、Win 7のジェスチャ認識機能を使用することです。マルチタッチハードウェアデバイスが存在し、準備ができているかどうかを確認するために使用。ジェスチャの種類と関連データを取得するためのGetGestureInfo

Copyright © Windowsの知識 All Rights Reserved