Deseo iniciar un hilo separado para manejar mensajes de ventana (a través de un bucle de bloqueo de GetMessage), pero aún crear las ventanas en el hilo inicial, después.¿Cómo puedo manejar los mensajes de ventana de un hilo separado?
Dentro del hilo separado, tan pronto como se pone en marcha, yo estoy llamando PeekMessage
con PM_NOREMOVE para asegurar una cola de mensajes existe (es necesario?), Seguido por ..
AttachThreadInput(initial thread id,GetCurrentThreadId(),true)
..before finalmente entrar el bucle de mensaje
Todavía no estoy usando un mutex o cs para asegurar que esto esté sucediendo a tiempo, pero estoy simplemente usando una declaración Sleep
en mi hilo inicial por simplicidad.
Independientemente, los mensajes de ventana no parecen ser interceptados por el hilo separado.
No estoy seguro de si estoy haciendo esto correctamente y agradecería cualquier orientación posible. Ambos hilos están en el mismo proceso
Gracias a todos
Esto es casi siempre una idea terrible. Para empezar, es probable que desee manejar mensajes * que en realidad no se publican * en la cola de entrada del subproceso de interfaz de usuario ... De lo contrario, al menos querrá * enviar * mensajes a Windows propiedad del subproceso de interfaz de usuario, y eso tampoco funcionará En realidad, debería procesar mensajes en el hilo de la interfaz de usuario y usar el hilo separado para las operaciones que consumen mucho tiempo, sin intentar compartir la cola de entrada entre ellos. Ver: http://stackoverflow.com/questions/783073/processing-messages-is-too-slow-resulting-in-a-jerky-unresponsive-ui-how-can – Shog9
Para todos los efectos, deseo utilizar el hilo separado como el hilo de la interfaz de usuario. Solo deseo tener la capacidad de instigar la creación de ventanas desde el – ProPuke
primario @ProPuke: y no puedes hacer eso. Windows debe ser propiedad y manipulado por un * y solo un hilo *: todo el sistema está diseñado con esta suposición. – Shog9