Contexto de entrada
Un "contexto de entrada" es una estructura interna mantenida por el IMM. Contiene información sobre el estado del IME y se usa en las ventanas IME. De forma predeterminada, el sistema operativo crea y asigna un contexto de entrada a cada subproceso. Dentro del subproceso, este contexto de entrada predeterminado es un recurso compartido y está asociado a cada ventana recién creada.
Para recuperar o establecer información en el IME, una aplicación compatible con IME debe recuperar primero un identificador para el contexto de entrada asociado a una ventana especificada. La aplicación recupera el identificador mediante la función ImmGetContext . Puede usar el identificador recuperado en llamadas posteriores a las funciones IMM para recuperar y establecer valores IME, como el estilo de ventana de composición, el estilo de composición y la posición de la ventana de estado. Una vez que la aplicación haya terminado de usar el contexto, debe liberar el contexto mediante la función ImmReleaseContext .
Dado que el contexto de entrada predeterminado es un recurso compartido, los cambios que realiza la aplicación se aplican a todas las ventanas del subproceso. Sin embargo, la aplicación puede invalidar este comportamiento predeterminado mediante la creación de su propio contexto de entrada y su asociación con una o varias ventanas del subproceso. Los cambios realizados en un contexto de entrada específico de la aplicación solo se aplican a las ventanas asociadas al contexto.
La aplicación puede crear un contexto de entrada mediante la función ImmCreateContext . Para asignar el contexto a una ventana, la aplicación llama a la función ImmAssociateContext . Esta función devuelve un identificador al contexto de entrada asociado anteriormente. Si la aplicación aún no ha asociado un contexto de entrada con la ventana, el identificador devuelto es para el contexto de entrada predeterminado. Normalmente, la aplicación guarda este identificador y, posteriormente, lo asocia con la ventana cuando el contexto de entrada personalizado ya no es necesario.
Una vez asociado un contexto de entrada a una ventana, el sistema operativo selecciona automáticamente ese contexto cuando se activa la ventana y recibe el foco de entrada. El estilo y otra información del contexto de entrada afectan a la entrada del teclado posterior para esa ventana, lo que determina cómo funciona el IME.
La aplicación debe destruir cualquier contexto de entrada personalizado antes de que finalice. En primer lugar, la aplicación quita el contexto de entrada de cualquier asociación que haya realizado con ventanas en el subproceso mediante la función ImmAssociateContext . A continuación, llama a la función ImmDestroyContext .