Поделиться через


Метод IInputPanelInvocationConfiguration::RequireTouchInEditControl (inputpanelconfiguration.h)

Требует явного касания пользователя в поле редактирования перед вызовом сенсорной клавиатуры.

Синтаксис

HRESULT RequireTouchInEditControl();

Возвращаемое значение

Метод RequireTouchInEditControl всегда возвращает S_OK.

Комментарии

При вызове метода RequireTouchInEditControl все будущие изменения фокуса требуют явного касания пользователем поля редактирования перед вызовом сенсорной клавиатуры. Метод RequireTouchInEditControl можно вызывать несколько раз, но отменить этот параметр невозможно.

Этот параметр применяется к любому событию фокуса, которое происходит в окне, которое выполняется в процессе, который его вызвал. Метод RequireTouchInEditControl не влияет на принадлежащие окна в другом процессе, который имеет цепочку владения с текущим процессом, который называется RequireTouchInEditControl.

Метод RequireTouchInEditControl всегда возвращает S_OK. Если используется этот API, свойство IsUIBusy не действует. Эти две модели взаимодействия, по сути, являются взаимоисключающими.

В следующем коде показано, как вызвать метод RequireTouchInEditControl .

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

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

Примечание Вызов Release до того, как приложение завершит рисование пользовательского интерфейса, может привести к неопределенному поведению. Если сенсорная клавиатура еще не запущена, вызов Release может привести к выгрузке tiptsf.dll, так как больше нет ссылок на библиотеку DLL. В этом случае состояние, заданное методом RequireTouchInEditControl , теряется.
 
Если вам нужно отложить вызов сенсорной клавиатуры до более позднего времени, например после завершения анимации или прямых манипуляций, используйте свойство автоматизации пользовательского интерфейса IsUIBusy . Дополнительные сведения см. в разделе Регистрация настраиваемых свойств, событий и шаблонов элементов управления.

Если для параметра IsUIBusy задано значение True, сенсорная клавиатура не изменяет визуальное состояние в зависимости от изменений фокуса в приложении. Он по-прежнему может изменять визуальное состояние на основе переопределения действий пользователя, таких как использование физической клавиатуры или закрытие вручную.

Если для IsUIBusy задано значение False, сенсорная клавиатура возобновляет работу по умолчанию и синхронно запрашивает элемент управления с фокусом.

В следующем коде показано, как зарегистрировать свойство автоматизации пользовательского интерфейса IsUIBusy .

/* 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
Header inputpanelconfiguration.h

См. также раздел

IInputPanelInvocationConfiguration