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();
IsUIBusy を True に設定しても、タッチ キーボードはアプリ内のフォーカスの変更に基づいて表示状態を変更しません。 物理キーボードや手動による無視の使用など、ユーザーアクションのオーバーライドに基づいて視覚的な状態を変更することはできます。
IsUIBusy を False に設定すると、タッチ キーボードは既定の動作を再開し、フォーカスがあるコントロールに対して同期的にクエリを実行します。
次のコードは 、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 |