求指点:多线程能解决如上描述的,合成的语音与动画同时播放有关问题么

求高手指点指点:多线程能解决如下描述的,合成的语音与动画同时播放问题么?
小弟现在在学习用Opengl和Microsoftware SAPI在VC++中做动画语音方面的东西,希望能实现程序一边能做动画(在OnTimer()中调用Opengl绘制的模型),一边合成语音(用SAPI实现)。
调用动画和语音的按钮控制单击响应函数大致如下:
OnClickButton()
{
……………………
……………………
    Animation();//动画函数
    Speak();    //语音合成函数
……………………
……………………
}
问题:运行程序后,点击按钮,只有合成的声音在播放,在播放声音期间,做动画的那个界面里面没有反应,而且什么都不能点,比如说按钮、编辑框(输入文字)。等声音播放完后,动画才开始做,界面上的各个按钮才能使用。是不是说用SAPI合成语音的话,在合成语音时,这个Speak()函数把进程都占了,如果要让程序一边显示动画,一边合成语音,多线程技术是不是就能解决(因为我听同学说,多线程是啥多个线程交替运行,我想这样是不是还是和现在的问题一样,语音完了,才做动画),或者说再用SAPI合成语音时,有什么函数、方法可以避免合成语音对进程的独占。

------解决方案--------------------
可以解决,不过要做好同步控制。
------解决方案--------------------
如果SAPI这么弱智,放个声音就要阻塞进程,也就没有实用价值了。

pVoice->Speak( theString, SPF_ASYNC, NULL);

可以异步播放!不会阻塞当前进程的!

另外,动画用定时器的话,效率可是太低了,建议你查阅一些游戏循环的代码。