Share via


Método IInputPanelInvocationConfiguration::RequireTouchInEditControl (inputpanelconfiguration.h)

Requer um toque explícito do usuário em um campo de edição antes que o teclado virtual invoque.

Sintaxe

HRESULT RequireTouchInEditControl();

Valor retornado

O método RequireTouchInEditControl sempre retorna S_OK.

Comentários

Quando o método RequireTouchInEditControl é chamado, todas as alterações de foco futuras exigem um toque explícito do usuário em um campo de edição antes que o teclado virtual invoque. Você pode chamar o método RequireTouchInEditControl várias vezes, mas não há como desfazer a configuração.

Essa configuração se aplica a qualquer evento de foco que ocorra em uma janela em execução no processo que a chamou. O método RequireTouchInEditControl não afeta janelas de propriedade em outro processo que tenha uma cadeia de propriedade para o processo atual chamado RequireTouchInEditControl.

O método RequireTouchInEditControl sempre retorna S_OK. Se essa API for usada, a propriedade IsUIBusy não terá efeito. Os dois modelos de interação são essencialmente mutuamente exclusivos.

O código a seguir mostra como chamar o método RequireTouchInEditControl .

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

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

Nota Chamar Release antes que o aplicativo termine de desenhar a interface do usuário pode causar um comportamento indefinido. Se o teclado virtual ainda não estiver em execução, chamar Release poderá fazer com que tiptsf.dll sejam descarregados, pois não há mais referências à dll. Se isso ocorrer, o estado definido pelo método RequireTouchInEditControl será perdido.
 
Se você precisar atrasar a invocação do teclado virtual até uma hora posterior, como quando as animações ou a manipulação direta tiverem sido concluídas, use a propriedade de automação de interface do usuário personalizada IsUIBusy . Para obter mais informações, consulte Registrando propriedades personalizadas, eventos e padrões de controle.

Quando você define IsUIBusy como True, o teclado virtual não altera o estado visual com base nas alterações de foco no aplicativo. Ele ainda é capaz de alterar o estado visual com base na substituição da ação do usuário, como usar um teclado físico ou uma demissão manual.

Quando você define IsUIBusy como False, o teclado virtual retoma seu comportamento padrão e consulta de forma síncrona para o controle que tem foco.

O código a seguir mostra como registrar a propriedade de automação de interface do usuário personalizada 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);
            } 

Requisitos

   
Cliente mínimo com suporte Windows 8
Servidor mínimo com suporte Windows Server 2012
Plataforma de Destino Windows
Cabeçalho inputpanelconfiguration.h

Confira também

IInputPanelInvocationConfiguration