• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 74, 文章 - 0, 評論 - 26, 引用 - 0
            數(shù)據(jù)加載中……

            (msdn)Using MFC to Automate SAPI (SAPI 5.3)http://msdn2.microsoft.com/en-us/library/ms717069.aspx

            Microsoft Speech API 5.3   用oleview 可以產(chǎn)生 idl 文件 再用 midl工具 可以產(chǎn)生 tlb,h,c 存根文件 等.

            Using MFC to Automate SAPI

            Introduction

            The Microsoft Foundation Classes (MFC) provides an easy and convenient way to automate calls to SAPI using its Class Wizard to generate wrappers for the SAPI layer from the SAPI Type Library.

            In order to accomplish this, perform the following steps:

            1. Create a new MFCAppWizard(exe) project in Visual C++.
            2. Based on the type of application you are creating, follow the wizard prompts. In Step 3 of the wizard prompts, (or Step 2 if you are creating a Dialog Based application) make sure that the Automation check box is selected under the heading, What other support would you like to include?

            Once the new project is ready, access Class Wizard.

            1. Click the Automation tab, and then click Add Class and select From a type library in the drop-down list.
            2. Browse for the sapi.dll file and open it.
            3. Select the classes you would like Class Wizard to generate a wrapper for. The resulting default header and implementation files are sapi.h and sapi.cpp respectively. The rest of this document assumes that you have chosen to use these default file names. Click OK.
            4. You should now be back in the Class Wizard window. Click OK.
            After you are done with the above steps, Visual C++ will automatically add the Class Wizard generated files sapi.cpp and sapi.h to your project.

            Upon viewing the sapi.h file, you should notice that it is nothing more than an automation wrapper that has been generated for all the classes you selected. Notice that all the classes inherit from COleDispatchDriver, hence the dispatch interface needs to be set up. This only requires a few lines of simple code, after which the wrapper class can be used just like any other C++ class.

            Example

            This example assumes that you chose to generate a wrapper for the ISpeechVoice class from among any other classes you may have selected. Using the project created above, include the sapi.h file within a source file in the project that will make automation calls to SAPI using the wrapper. In that source file, type the following code.

            CLSID CLSID_SpVoice;    // class ID for the SAPI SpVoice object
            LPDISPATCH pDisp; // dispatch interface for the class
            ISpeechVoice voice; // use the MFC Class Wizard generated wrapper

            CLSIDFromProgID(L"SAPI.SpVoice", &CLSID;_SpVoice);
            voice.CreateDispatch(CLSID_SpVoice);
            pDisp = voice.m_lpDispatch;

            HRESULT hr = pDisp->QueryInterface(CLSID_SpVoice, (void**)&voice;.m_lpDispatch);

            if (hr == S_OK) {
            pDisp->Release();
            }
            else {
            voice.AttachDispatch(pDisp, TRUE);
            }

            voice.Speak("hello world", 1); // asynchronous call to Speak method of ISpeechVoice interface

            If you have been following the steps outlined above properly, you should hear your computer say "hello world!" That's all there is to using MFC to make automation calls to SAPI. Currently however, not all the wrapper classes generated by MFC's Class Wizard work properly. For instance, the ISpeechLexicon interface does not work. The work around for this is to implement your own automation wrapper classes using C++. The steps to do that are beyond the scope of this document. Of course, you can always use the COM interfaces in C++ and Automation in Visual Basic to ensure that every interface in SAPI works easily and flawlessly.

            posted on 2007-11-20 09:06 井泉 閱讀(1203) 評論(1)  編輯 收藏 引用 所屬分類: C++

            評論

            # re: (msdn)Using MFC to Automate SAPI (SAPI 5.3)http://msdn2.microsoft.com/en-us/library/ms717069.aspx[未登錄]  回復(fù)  更多評論   

            你好,我在試驗(yàn)這個例子的時(shí)候遇見了問題。我不知道Example的那段代碼應(yīng)該加到哪里。我試驗(yàn)了一下,出現(xiàn)了錯誤。所以,希望你能詳細(xì)的指點(diǎn)我一下,可以么?謝謝啦!我的郵箱是:nvllnvll@126.com
            2010-03-19 22:07 | Harry
            99久久国产综合精品成人影院| 亚洲伊人久久成综合人影院 | 少妇久久久久久久久久| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 国产精自产拍久久久久久蜜| 青青青国产精品国产精品久久久久 | 久久综合精品国产二区无码| 午夜天堂av天堂久久久| 无码人妻精品一区二区三区久久久 | 色婷婷综合久久久久中文字幕| 日韩亚洲国产综合久久久| 久久久久女教师免费一区| 久久夜色撩人精品国产小说| 久久人人爽人人爽人人av东京热 | 色综合久久88色综合天天| 国产2021久久精品| 久久精品免费网站网| 久久性生大片免费观看性| 中文字幕精品久久久久人妻| 亚洲AV无码久久| 99久久夜色精品国产网站| 欧美大战日韩91综合一区婷婷久久青草| 久久高清一级毛片| 日日躁夜夜躁狠狠久久AV| 91精品无码久久久久久五月天| 久久久久18| 久久精品中文闷骚内射| 精品国产热久久久福利| 久久婷婷五月综合色奶水99啪| 精品久久亚洲中文无码| 久久久精品午夜免费不卡| 久久人妻少妇嫩草AV无码蜜桃| 亚洲精品乱码久久久久久久久久久久 | 四虎国产永久免费久久| 久久久久久免费视频| 久久夜色精品国产亚洲| 亚洲伊人久久成综合人影院 | 久久99精品国产99久久6| 亚洲国产欧洲综合997久久| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 青青青国产精品国产精品久久久久 |