最近一个项目需要用到朗读功能,开发环境WIN7 64+VC2005
为了排除其他干扰,我直接新建了一个MFC对话框程序,什么都没动,就在对话框重载了OnInitDialog()函数
然后头文件里加上:
#include "sapi.h"
#include "sphelper.h"
#pragma comment(lib, "sapi.lib")
当然,还要设置头文件和LIB文件的包含路径如下:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\lib
OnInitDialog()函数中加入如下代码,然后运行
ISpVoice * pVoice = NULL;
//init COM
if (FAILED(CoInitialize(NULL)))
{
MessageBox(_T("Error to intiliaze COM") );
return FALSE;
}
//init SAPI
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL,CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if( SUCCEEDED( hr ) )
{
hr = pVoice->Speak(_T("Test"), 0, NULL);
pVoice->Release();
pVoice = NULL;
}
//release COM
CoUninitialize();
运行以后,正常朗读了文本内容“Test”,程序也没有崩溃,但是VC2005的对话框里,却弹出如下两个信息:
MfcTest.exe 中的 0x7604c52f 处最可能的异常: 0x000006BA: RPC 服务器不可用。
MfcTest..exe 中的 0x7604c52f 处最可能的异常: 0x0000071A: 远程过程调用被取消。
我尝试做了如下事情:
1.到调试菜单,把异常选项重置
2.打开RPC服务
但这都无效,后来我又用VC2015,同样的新建工程,同样的代码,一样的输出信息。。
关于这段朗读的代码,我在网上找了很多,完全一模一样的东西
现在的问题是,虽然VC2005和VC2015都弹出了这两条信息,但是程序正常运行,没有崩溃。但我有强迫症,不能接受这个。。。
有没有人知道这是为什么。。。