这是我在 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 接口吗?我在这里想念什么?有任何想法吗?