次の方法で共有


IInputPanelInvocationConfiguration::RequireTouchInEditControl メソッド (inputpanelconfiguration.h)

タッチ キーボードが呼び出される前に、編集フィールドを明示的にユーザーがタップする必要があります。

構文

HRESULT RequireTouchInEditControl();

戻り値

RequireTouchInEditControl メソッドは常にS_OKを返します。

解説

RequireTouchInEditControl メソッドが呼び出されると、今後のすべてのフォーカス変更では、タッチ キーボードが呼び出される前に、編集フィールドを明示的にユーザーがタップする必要があります。 RequireTouchInEditControl メソッドは複数回呼び出すことができますが、設定を元に戻す方法はありません。

この設定は、それを呼び出したプロセスで実行されているウィンドウに発生するフォーカス イベントに適用されます。 RequireTouchInEditControl メソッドは、RequireTouchInEditControl を呼び出した現在のプロセスへの所有権チェーンを持つ別のプロセスの所有ウィンドウには影響しません。

RequireTouchInEditControl メソッドは常にS_OKを返します。 この API を使用する場合、 IsUIBusy プロパティは無効です。 2 つの相互作用モデルは、基本的に相互に排他的です。

次のコードは、 RequireTouchInEditControl メソッドを呼び出す方法を示しています。

#include <inputpanelconfiguration.h>
#include <inputpanelconfiguration_i.c>

IInputPanelInvocationConfiguration *pInputPanelInvocationConfiguration;
CoCreateInstance(CLSID_InputPanelConfiguration, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pInputPanelInvocationConfiguration));
pInputPanelInvocationConfiguration->RequireTouchInEditControl();

メモ アプリが UI の描画を完了する前に Release を呼び出すと、未定義の動作が発生する可能性があります。 タッチ キーボードがまだ実行されていない場合は、dll への参照がなくなったため、 Release を呼び出すと、tiptsf.dll がアンロードされる可能性があります。 この場合、 RequireTouchInEditControl メソッドによって設定された状態は失われます。
 
アニメーションや直接操作が完了したときなど、後でタッチ キーボードの呼び出しを遅らせる必要がある場合は、 IsUIBusy カスタム UI オートメーション プロパティを使用します。 詳細については、「 カスタム プロパティ、イベント、およびコントロール パターンの登録」を参照してください。

IsUIBusyTrue に設定しても、タッチ キーボードはアプリ内のフォーカスの変更に基づいて表示状態を変更しません。 物理キーボードや手動による無視の使用など、ユーザーアクションのオーバーライドに基づいて視覚的な状態を変更することはできます。

IsUIBusyFalse に設定すると、タッチ キーボードは既定の動作を再開し、フォーカスがあるコントロールに対して同期的にクエリを実行します。

次のコードは 、IsUIBusy カスタム UI オートメーション プロパティを登録する方法を示しています。

/* 03391bea-6681-474b-955c-60f664397ac6 */
DEFINE_GUID(
    GUID_UIBusy, 
    0x03391bea, 0x6681, 0x474b, 0x95, 0x5c, 0x60, 0xf6, 0x64, 0x39, 0x7a, 0xc6);

UIAutomationPropertyInfo customPropertyInfo =
            {
                GUID_UIBusy,
                L"IsUIBusy",
                UIAutomationType_Bool
            };

            CComPtr<IUIAutomationRegistrar> spRegistrar;
            hr = spRegistrar.CoCreateInstance(
                CLSID_CUIAutomationRegistrar, 
                nullptr, 
                CLSCTX_INPROC_SERVER);
            if (SUCCEEDED(hr))
            {
                PATTERNID customPropertyId;
                hr = spRegistrar->RegisterProperty(&customPropertyInfo, &customPropertyId);
            } 

要件

   
サポートされている最小のクライアント Windows 8
サポートされている最小のサーバー Windows Server 2012
対象プラットフォーム Windows
ヘッダー inputpanelconfiguration.h

関連項目

IInputPanelInvocationConfiguration