windows winapi ime

windows - ¿cómo se usa IME?



winapi (2)

Quiero hacer un control que maneje la entrada del usuario, así que quiero poder manejar diferentes teclados, y una de las maneras es usar IME.

Si no lo maneja, hay una ventana flotante que aparece cuando tiene IME activo (por ejemplo, escritura japonesa activa). Encontré los mensajes que deben ser atendidos, pero no sé cómo enviar las claves que estoy atrapando al IME y cuándo obtengo un char convertido válido.


No creo que quieras suprimir un IME para que no se muestre. Nunca he usado uno que no sea para probar, pero tengo entendido que un IME es la forma esperada / predeterminada de ingresar caracteres no ingleses usando un teclado inglés.

Si está escribiendo un control y desea soportar completamente un IME, creo que las dos opciones que tiene son responder a los diversos mensajes de Windows (como WM_IME_START_COMPOSITION, WM_IME_COMPOSITION, etc.) o usar el Marco de servicios de texto (TSF). Tengo entendido que TSF es el futuro, y en Vista y Windows 7, todo el código IME se basa en TSF, con los mensajes de Windows todavía allí para la compatibilidad con los programas anteriores.


Soy un SDE de Microsoft que solía mantener el IME coreano (Windows y Office) por un tiempo ...

Lamentablemente, la mejor documentación de la API IME es proporcionada por sitios que no son de Microsoft:

Aquí está la documentación oficial de Microsoft: Administrador de métodos de entrada (MSDN)

También hay un IME nuevo y más avanzado basado en el Marco de servicios de texto (TSF) que Microsoft preferiría que usara, pero es aún más complicado y la antigua API se emula bastante bien. Si no necesita ninguna de las características avanzadas (como la entrada a través de la tableta / reconocimiento de voz / imán / IME más elegante), entonces el uso de la antigua API es suficiente.

La mejor documentación sobre el Marco de servicios de texto es el blog TSF Aware escrito por otro desarrollador de Microsoft. Eric Brown puede incluso responder personalmente sus preguntas si toma esta ruta.

Aquí está la documentación oficial de Microsoft para TSF: Text Services Framework (MSDN)

Una característica de TSF que puede resultar útil es la capacidad de suprimir la representación del IME (necesaria para juegos de pantalla completa que necesitan representar el IME por sí mismos, por ejemplo). Simplemente dígale a TSF que su aplicación renderizará la GUI de IME, luego implemente un método de representación vacío: Descripción general del modo UILess (MSDN)