Уведомление SPEI_WORD_BOUNDARY о событии SAPI не работает

Я использовал эту функцию для асинхронного произнесения предложений.

m_cpVoice->Speak(m_sInputText,SPF_ASYNC, NULL))

Я хочу получать уведомления о событии SPEI_WORD_BOUNDARY, поэтому я сделал это.

m_cpVoice->SetInterest(SPFEI(SPEI_WORD_BOUNDARY),SPFEI(SPEI_WORD_BOUNDARY));
m_cpVoice->SetNotifyWindowMessage(GetSafeHwnd(),CTTSDlgDlg::MSG_SAPI_EVENT,0,0);

CTTSDlgDlg::MSG_SAPI_EVENT сопоставляется с моим обработчиком событий.

Я что-то упустил, и в чем проблема, что я не получаю уведомления?


person Ashish    schedule 22.01.2010    source источник
comment
Что произойдет, если вы расширите маску события? (например, включая SPEI_START_INPUT_STREAM и SPEI_END_INPUT_STREAM)? Какие голоса вы используете? Каково значение CTTSDlgDlg::MSG_SAPI_EVENT?   -  person Eric Brown    schedule 22.01.2010
comment
MSG_SAPI_EVENT — это зарегистрированное сообщение окна.   -  person Ashish    schedule 25.01.2010
comment
если я использую WM_USER в качестве уведомления вместо MSG_SAPI_EVENT, тогда все работает нормально. Почему это так ?   -  person Ashish    schedule 25.01.2010
comment
Где вы регистрируете MSG_SAPI_EVENT? Кроме того, как вы привязываете MSG_SAPI_EVENT к своему коду? (Например, для правильной работы MFC требуется ON_REGISTERED_MESSAGE вместо ON_MESSAGE.)   -  person Eric Brown    schedule 25.01.2010
comment
Спасибо, да, это сработало после использования сообщения ON_REGISTERED_MESSAGE.   -  person Ashish    schedule 27.01.2010


Ответы (1)


MFC требует ON_REGISTERED_MESSAGE вместо ON_MESSAGE, чтобы ваши события доставлялись на ваш объект.

person Eric Brown    schedule 27.01.2010
comment
Я думаю, что только для зарегистрированного сообщения MFC требуется сопоставление ON_REGISTERED_MESSAGE. - person Ashish; 28.01.2010
comment
Да, это правда. Если вы использовали сообщение выше WM_APP, вы можете использовать ON_MESSAGE. Но поскольку вы использовали зарегистрированное сообщение, вам нужно использовать ON_REGISTERED_MESSAGE для его обработки. - person Eric Brown; 02.02.2010