Compartir a través de


Invocar patrón de control

Describe instrucciones y convenciones para implementar IInvokeProvider, incluida la información sobre los métodos. El patrón de control Invoke se usa para admitir controles que no mantienen el estado cuando se activan, sino que inician o realizan una única acción inequívoca.

Los controles que mantienen el estado, como casillas y botones de radio, deben implementar IToggleProvider y ISelectionProvider respectivamente. Para obtener ejemplos de controles que implementan este patrón de control, vea tipos de control y sus patrones de control admitidos.

Este tema contiene las secciones siguientes.

Directrices y convenciones de implementación

Al implementar el patrón de control Invoke , tenga en cuenta las siguientes directrices y convenciones:

  • Los controles implementan IInvokeProvider si el mismo comportamiento no se expone a través de otro proveedor de patrones de control. Por ejemplo, si el método IUIAutomationInvokePattern::Invoke de un control realiza la misma acción que el método IUIAutomationExpandCollapsePattern::Expand o Collapse, el control no debe implementar IInvokeProvider.

  • La invocación de un control se realiza generalmente haciendo clic o haciendo doble clic o presionando ENTRAR, un método abreviado de teclado predefinido o alguna combinación alternativa de pulsaciones de teclas.

  • El evento invocado (UIA_Invoke_InvokedEventId) se genera en un control que se ha activado (como respuesta a un control que lleva a cabo su acción asociada). Si es posible, el evento debe generarse después de que el control haya completado la acción y se devuelva sin bloqueo. El evento Invoked (UIA_Invoke_InvokedEventId) debe generarse antes de atender la solicitud Invoke en los escenarios siguientes:

    • No es posible o práctico esperar hasta que se complete la acción.
    • La acción requiere interacción del usuario.
    • La acción consume mucho tiempo y hará que el cliente que realiza la llamada bloquee durante una cantidad significativa de tiempo.
  • Si invocar el control tiene efectos secundarios significativos, esos efectos secundarios deben exponerse a través de la propiedad helpText . Por ejemplo, aunque IUIAutomationInvokePattern::Invoke no esté asociado con la selección, Invocar puede hacer que se seleccione otro control.

  • Los efectos de mantener el puntero (o sobre el mouse) generalmente no constituyen un evento de invocado. Sin embargo, los controles que realizan una acción (en lugar de provocar un efecto visual) en función del estado de desplazamiento deben admitir el patrón de control invoke .

    Nota

    Esta implementación se considera un problema de accesibilidad si el control solo se puede invocar como resultado de un efecto secundario relacionado con el mouse.

  • Invocar un control es diferente de seleccionar un elemento. Sin embargo, dependiendo del control, invocarlo puede hacer que el elemento se seleccione como efecto secundario. Por ejemplo, invocar un elemento de lista de documentos de Microsoft Word en la carpeta Mis documentos selecciona el elemento y abre el documento.

  • Un elemento puede desaparecer del árbol de Automatización de la interfaz de usuario de Microsoft inmediatamente después de invocarse. La solicitud de información del elemento proporcionado por la devolución de llamada del evento puede producir un error como resultado. La información almacenada previamente en caché es la solución alternativa recomendada.

  • Los controles pueden implementar varios patrones de control. Por ejemplo, el control color de relleno de en la barra de herramientas de Microsoft Excel implementa los patrones de control Invoke y ExpandCollapse. El patrón de control ExpandCollapse expone el menú y el patrón de control Invoke Invoke rellena la selección activa con el color elegido.

Miembros necesarios para IInvokeProvider

El método siguiente es necesario para implementar la interfazdeIInvokeProvider.

Miembros necesarios Tipo de miembro Notas
invocar Método Invoke es una llamada asincrónica y debe devolverse inmediatamente sin bloquear.
Este comportamiento es especialmente crítico para los controles que, directa o indirectamente, inician un cuadro de diálogo modal cuando se invocan. Cualquier cliente de Automatización de la interfaz de usuario que instigó el evento permanecerá bloqueado hasta que se cierre el cuadro de diálogo modal.

Este patrón de control no tiene propiedades ni eventos asociados.

tipos de control y sus patrones de control admitidos

Introducción a los patrones de control de automatización de la interfaz de usuario de

Información general del árbol de automatización de la interfaz de usuario de

UIA_Invoke_InvokedEventId