Share via


WM_TOUCH メッセージ

指やペンなどの 1 つ以上のタッチ ポイントがタッチに依存するデジタイザーサーフェスに触れたときに、ウィンドウに通知します。

パラメーター

wParam

下位ワードには、このメッセージに関連付けられているタッチ ポイントの数が含まれています。 高次語は、将来使用するために予約されています。

lParam

GetTouchInputInfo の呼び出しで使用して、このメッセージに関連付けられているタッチ ポイントに関する詳細情報を取得できるタッチ入力ハンドルが含まれています。

このハンドルは現在のプロセス内でのみ有効であり、SendMessage または PostMessage 呼び出しで LPARAM として渡す場合を除き、プロセス間で渡さないでください。

アプリケーションでこのハンドルが不要になった場合、アプリケーションは CloseTouchInputHandle を呼び出して、このハンドルに関連付けられているプロセス メモリを解放する必要があります。 これを行わないと、アプリケーションのメモリ リークが発生する可能性があります。

このパラメーターのタッチ入力ハンドルは、メッセージが DefWindowProc に渡された後で無効になっていることに注意してください。 DefWindowProc は、このハンドルを閉じて無効にします。

また、このパラメーターのタッチ入力ハンドルは、 PostMessageSendMessage、またはそのいずれかのバリアントを使用してメッセージが転送された後に有効ではなくなります。 これらの関数は、このハンドルを閉じて無効にします。

戻り値

アプリケーションがこのメッセージを処理すると、0 が返されます。

アプリケーションがメッセージを処理しない場合は、 DefWindowProc を呼び出す必要があります。 これを行わないと、タッチ入力ハンドルが閉じておらず、関連付けられているプロセス メモリが解放されないため、アプリケーションはメモリリークを引き起こします。

解説

WM_TOUCH メッセージは、ウィンドウの HTTRANSPARENT 領域を考慮しません。 ウィンドウがWM_NCHITTESTメッセージに応答して HTTRANSPARENT を返す場合、マウス メッセージは親に移動し、WM_TOUCHメッセージはウィンドウに直接移動します。

次のコードは、このメッセージに関連付けられている詳細なタッチ入力情報を取得する方法の例です。

UINT cInputs = LOWORD(wParam);
PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs];
if (NULL != pInputs)
{
    if (GetTouchInputInfo((HTOUCHINPUT)lParam,
                          cInputs,
                          pInputs,
                          sizeof(TOUCHINPUT)))
    {
        // process pInputs
        if (!CloseTouchInputHandle((HTOUCHINPUT)lParam))
        {
            // error handling
        }
    }
    else
    {
        // GetLastError() and error handling
    }
    delete [] pInputs;
}
else
{
    // error handling, presumably out of memory
}
return DefWindowProc(hWnd, message, wParam, lParam);

必要条件

要件
サポートされている最小のクライアント
Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2008 R2 [デスクトップ アプリのみ]
Header
Winuser.h (Windows.h を含む)

関連項目

Messages (メッセージ)

操作と慣性プログラミング ガイド

Windows Touch 入力プログラミング ガイド