好吧,原来
http://blog.csdn.net/artemisrj/article/details/8723095
我用的是对话框模式,其中涉及到对话框的切换,我的程序是语音切换对话框。我在每一个对话框中都设置了语音识别,然后悲剧就来了。
不知道为什么,OnOk();并没有使得原来对话框对应的语音识别结束,其实做收尾工作应该是一个好习惯啊,我竟然没有养成好的收尾习惯。
在关闭对话框的时候加上下面两行
m_pSRGrammar->SetRuleState( NULL,NULL,SPRS_INACTIVE );
m_pSREngine->SetRecoState(SPRST_INACTIVE);
问题得到解决。