Poner IME en un cuadro de texto personalizado, derivado de Control

He creado mi propio control de cuadro de texto de una sola línea en C # .net 3.5

He escrito esto completamente desde cero, incluido mi propio código de selección, desplazamiento, copiar / pegar, etc. Incluso puede seleccionar texto de izquierda a derecha, no es que alguna vez use eso ...

El problema que tengo es con la integración IME (editor de métodos de entrada). El IME funciona hasta cierto punto, pero tengo algunos problemas. Voy a enumerar uno de ellos aquí.

Normalmente, usando un TextBox, la construcción IME se representa dentro del TextBox. Sin embargo, en mi Control, el IME se muestra en la parte inferior derecha de la pantalla. Intenté mirar otros controles personalizados, incluido el utilizado en SharpDevelop. Sin embargo, esto tenía el mismo problema. Escribir en chino, japonés o coreano hizo que las cosas de IME se hicieran en la esquina inferior derecha de la pantalla.

Necesito algunos consejos sobre cómo hacer que esto se haga en mi propio cuadro de texto, y miré la API de Windows para IME, pero hay tantas funciones y no tengo idea de por dónde empezar.

Entonces, ¿alguna idea?

Está bien si alguna muestra de código está en C ++ (administrado / no administrado) o VB.net. Puedo moverlo con bastante facilidad.

Respuestas a la pregunta(1)

Su respuesta a la pregunta