提一个有关语音朗读的问题?(com调用问题)
// Machine generated IDispatch wrapper class(es) created with ClassWizard
/////////////////////////////////////////////////////////////////////////////
// IVTxtAuto wrapper class
class IVTxtAuto : public COleDispatchDriver
{
public:
IVTxtAuto() {} // Calls COleDispatchDriver default constructor
IVTxtAuto(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
IVTxtAuto(const IVTxtAuto& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
// Attributes
public:
// Operations
public:
void Register(LPCTSTR pszSite, LPCTSTR pszApp);
void Speak(LPCTSTR pszBuffer, long dwFlags);
void StopSpeaking();
void AudioPause();
void AudioResume();
void AudioRewind();
void AudioFastForward();
void SetCallback(LPCTSTR lpszNewValue);
void SetSpeed(long nNewValue);
long GetSpeed();
void SetEnabled(long nNewValue);
long GetEnabled();
BOOL GetIsSpeaking();
};
// Machine generated IDispatch wrapper class(es) created with ClassWizard
#include "stdafx.h"
#include "vtxtauto.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// IVTxtAuto properties
/////////////////////////////////////////////////////////////////////////////
// IVTxtAuto operations
void IVTxtAuto::Register(LPCTSTR pszSite, LPCTSTR pszApp)
{
static BYTE parms[] =
VTS_BSTR VTS_BSTR;
InvokeHelper(0x60020000, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
pszSite, pszApp);
}
void IVTxtAuto::Speak(LPCTSTR pszBuffer, long dwFlags)
{
static BYTE parms[] =
VTS_BSTR VTS_I4;
InvokeHelper(0x60020001, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
pszBuffer, dwFlags);
}
void IVTxtAuto::StopSpeaking()
{
InvokeHelper(0x60020002, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void IVTxtAuto::AudioPause()
{
InvokeHelper(0x60020003, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void IVTxtAuto::AudioResume()
{
InvokeHelper(0x60020004, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void IVTxtAuto::AudioRewind()
{
InvokeHelper(0x60020005, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void IVTxtAuto::AudioFastForward()
{
InvokeHelper(0x60020006, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void IVTxtAuto::SetCallback(LPCTSTR lpszNewValue)
{
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0x60020007, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
lpszNewValue);
}
void IVTxtAuto::SetSpeed(long nNewValue)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x60020008, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
long IVTxtAuto::GetSpeed()
{
long result;
InvokeHelper(0x60020008, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void IVTxtAuto::SetEnabled(long nNewValue)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x6002000a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
long IVTxtAuto::GetEnabled()
{
long result;
InvokeHelper(0x6002000a, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
BOOL IVTxtAuto::GetIsSpeaking()
{
BOOL result;
InvokeHelper(0x6002000c, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
==================================
以下为我的调用:
if (CoInitialize(NULL)==S_OK)
{
const GUID IID_IVTxtAuto = {0xFF2C7A50, 0x78F9, 0x11CE,{ 0xB7, 0x62, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0x5C} };
const GUID CLSID_VTxtAuto = {0xFF2C7A52, 0x78F9, 0x11CE,{ 0xB7, 0x62, 0x00, 0xAA, 0x00, 0x4C, 0xD6, 0x5C} };
GUID CLSIDOFSPEECH;
CLSIDFromProgID(L"Speech.VoiceText.1",&CLSIDOFSPEECH);
HRESULT hr = CoCreateInstance(CLSIDOFSPEECH,NULL,
CLSCTX_LOCAL_SERVER,IID_IVTxtAuto,(LPVOID*)&pIVTxtAuto);
if (SUCCEEDED(hr))
{
this->bSoundOk=TRUE;
pIVTxtAuto->Register("","English Text");
pIVTxtAuto->SetEnabled(1);
pIVTxtAuto->SetSpeed(150);
pIVTxtAuto->Speak("Wait a little,I will read the ",128);
((CButton *)(GetDlgItem(IDC_SPEAK)))->EnableWindow(TRUE);
((CButton *)(GetDlgItem(IDC_SPEAK)))->SetCheck(1);
}
else
{
CoUninitialize();
this->bSoundOk=FALSE;
((CButton *)(GetDlgItem(IDC_SPEAK)))->SetCheck(0);
((CButton *)(GetDlgItem(IDC_SPEAK)))->EnableWindow(FALSE);
MessageBox("本机没有安装TTS引擎,因此无法朗诵!","警告:",MB_OK+MB_ICONEXCLAMATION );
}
}
每当调用 pIVTxtAuto->Register("","English Text");时总是出现异常,在运行时,程序错误,无法继续执行,
请问什么毛病?
另外,我用pIVTxtAuto->Release();为什么编译器说接口IVTxtAuto 没有此成员函数?