最近开发一个LED演播室项目,在主窗口编辑需要播放的节目表,在另外可控的窗口中播放。由于可能有多个窗口同时播放(视屏,有特效的图片等),不知如何操作?这里是否需要另外创建一个UI线程对多个播放窗口进行控制?我的一个问题就是如何实现多个窗口的同时播放?由于播放是一个需要占用时间的过程,放在主线程会造成主窗口假死。我的想法是在线程中完成,但如果有n个窗口同时播放,是否需要创建n个UI线程,让每个窗口有自己的消息循环(如响应WM_PLAYFILE消息后就播放一个文件)呢?我也想过创建辅助线程对窗口进行绘图操作,有三种思路:
一  主窗口创建播放窗口,创建辅助工作者线程,给线程传递窗口指针,调用绘图函数。这会是是一种不安全的机制,虽然可以多窗口同时播放,但违反了线程访问的安全性,造成程序BUG。
二  主窗口创建播放窗口,创建辅助工作者线程,给线程传递窗口句柄,给窗口发送绘图消息,这样也行不通,因为窗口属于主线程,窗口绘图消息响应函数也逃不过主线程的消息循环,这样不仅会造成主窗口假死,同事也不能满足我多窗口同时播放的要求。
三  主窗口创建UI线程,UI线程创建播放窗口,再通过在UI线程的消息循环中完成播放窗口的播放消息响应。这样可以避免主窗口假死,但是仍然不能是多个窗口同时播放。今天我用SPY++查看了xmplayer 的LED播放器的线程与窗口,发现它的窗口都是属于同一个主线程的,请各位大侠帮我分析分析解决办法,小弟万分感激!!!!!