0

初期化してTSFに登録するコードは次のとおりです。

::OleInitialize(NULL);

HRESULT hr=CoCreateInstance(CLSID_TF_ThreadMgr,NULL,CLSCTX_INPROC_SERVER,IID_ITfThreadMgr,(void **)&pThreadMgr);
if (FAILED(hr) || pThreadMgr==null) return;

hr=pThreadMgr->Activate(&ClientId);
if (FAILED(hr)) return;

hr=pThreadMgr->CreateDocumentMgr(&pDocumentMgr);
if (FAILED(hr) || pDocumentMgr==null) return;


pTextStore=new CTextStore();   // create my ITextStoreACP store

hr=pDocumentMgr->CreateContext(ClientId,0,reinterpret_cast<ITextStoreACP *>pTextStore,&pContext,&EditCookie);
if (FAILED(hr) || pContext==null) goto END;

hr=pDocumentMgr->Push(pContext);
if (FAILED(hr)) return;

このコードの最後で、TextStore インターフェイスは GetTextView、GetStatus、および GetWnd 呼び出しを取得します。ただし、マイクに向かって話すと、SetText() またはその他のメソッドへの呼び出しは受信されません。代わりに、デフォルトのディクテーション スクラッチパッドが表示されます。スクラッチパッドを表示したくありません。テキストを TextStore にルーティングする必要があります。TextStoreACP インターフェイスを音声エンジンに登録する必要がありますか? ここで何が欠けていますか?何か案は?

4

1 に答える 1