No es posible. Cada ventana pertenece a la secuencia que lo creó, y esa propiedad no se puede transferir.
No se trata de colocar la bomba de mensajes en otro hilo. Cada hilo tiene su propia cola de mensajes. Cuando envía o publica un mensaje en una ventana, el sistema operativo verifica qué hilo posee esa ventana y dirige el mensaje a la cola de mensajes de esa secuencia. Los subprocesos no pueden leer ninguna cola de mensajes, sino la suya, por lo que no puede hacer que un subproceso procese los mensajes de las ventanas de otro subproceso.
Podría volver a enviar mensajes a otro hilo, como en the first idea in John's answer, pero como manejador de mensajes de uso general, se volverá más complicado de lo que vale. Muchos mensajes están destinados a modificar el estado de la ventana, pero no se puede modificar el estado, excepto desde el propio hilo de la ventana. Algunos mensajes se envían con la intención de obtener un valor de retorno significativo, pero no puede saber qué devolver hasta que se haya procesado el mensaje, por lo que tendría que bloquear, esperando que el hilo del trabajador procese el mensaje.
Será mejor que identifique el pequeño conjunto de mensajes que realmente se pueden descargar en un hilo de trabajo y los maneje especialmente. Una vez que lo hagas, no tendrás una ventana cuyos mensajes se manejen en un hilo diferente; solo tendrá un hilo de trabajo común, y será mucho menos confuso razonar sobre ello.
Si hay mensajes enviados a su ventana que requieren mucho tiempo de proceso, pero el remitente no necesita saber el resultado o conoce el resultado antes de terminar el procesamiento, entonces puede dar una respuesta temprana llamando al ReplyMessage
. Eso permite que el hilo de envío continúe ejecutándose mientras que el hilo de la ventana hace un trabajo adicional.
¿Hay una respuesta compleja o la respuesta simple es la única? – Epro
@Epro: Esa es la única respuesta que me temo. – Goz
¿Este enfoque sugirió el que utilizan los programas que tienen muchas ventanas abiertas a la vez? – Epro