IInputPanelInvocationConfiguration::RequireTouchInEditControl method (inputpanelconfiguration.h)
Requires an explicit user tap in an edit field before the touch keyboard invokes.
Syntax
HRESULT RequireTouchInEditControl();
Return value
The RequireTouchInEditControl method always returns S_OK.
Remarks
When the RequireTouchInEditControl method is called, all future focus changes require an explicit user tap in an edit field before the touch keyboard invokes. You can call the RequireTouchInEditControl method multiple times, but there's no way to undo the setting.
This setting applies for any focus event that takes place to a window that is running in the process that called it. The RequireTouchInEditControl method doesn't affect owned windows in another process that have an ownership chain to the current process that called RequireTouchInEditControl.
The RequireTouchInEditControl method always returns S_OK. If this API is used, then the IsUIBusy property has no effect. The two interaction models are essentially mutually exclusive.
The following code shows how to call the RequireTouchInEditControl method.
#include <inputpanelconfiguration.h>
#include <inputpanelconfiguration_i.c>
IInputPanelInvocationConfiguration *pInputPanelInvocationConfiguration;
CoCreateInstance(CLSID_InputPanelConfiguration, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pInputPanelInvocationConfiguration));
pInputPanelInvocationConfiguration->RequireTouchInEditControl();
When you set IsUIBusy to True, the touch keyboard doesn't change visual state based on focus changes within the app. It's still able to change visual state based on overriding user action, like using a physical keyboard or manual dismissal.
When you set IsUIBusy to False, the touch keyboard resumes its default behavior and queries synchronously for the control that has focus.
The following code shows how to register the IsUIBusy custom UI automation property.
/* 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);
}
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 8 |
Minimum supported server | Windows Server 2012 |
Target Platform | Windows |
Header | inputpanelconfiguration.h |