MFC 多线程使用的问题与心得

   学习MFC一段时间,期间经历了很多困惑,至到昨天才突然想明白!事情是这样的,程序中开了多个子线程,每次都在子线程中去切换界面,或者使用TTS播放声音,显示图片,总是没有效果,但是写一个测试程序,总是没有问题(因为测试程序只有一个线程,当时没以为是线程的原因)!最后是用一个定时器解决的,子线程启动一个定时器,把要做的代码放到定时器中!这个问题简直让我痛苦一生啊,很是灰心,因为有了问题,解决不了,总想去寻求他人帮助,可是发现他(思维很灵活)总能给一个办法绕开它,比如开一个定时器,却不知道为什么!

    后来我使用TTS的时候,还是不行,突然觉得应该跟线程有关,百度了一下,发现果然是线程的原因!MFC的主线程中有消息队列,可以处理各种界面上的变化!但是用AfxBeginThread创建的线程没有消息队列,而且界面上的东西只能使用主线程来干!其实也很好理解,主线程是UI线程,子线程专门来处理逻辑,要想让主线程播放TTS,创建自定义消息,子线程去通知主线程(::PostMessage(m_hWnd, WM_SOUNDMSG, NULL, 0);),定时器其实也是在通知主线程

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值