2011-02-08 77 views
1

我在使用Text Services Framework时遇到了与我的XP Professional系统有关的问题。我想从ITfThreadMgr获取ITfThreadMgrEx接口。据微软称,ITfThreadMgr.QueryInterface()用于获取ITfThreadMgrEx。当我在C++中尝试这个时,我得到了E_NOINTERFACE。据微软称,ITfThreadMgrEx在Windows 2000 TSF 1.0上可用。所以我只是自然地认为它将在XP Professional上可用。无法在我的XP Professional系统上获得ITfThreadMgrEx

此外,我已经在Windows 7上试过这个程序,没问题。然而,在安装了国际语言远东语言支持的两个不同的Windows XP Professional SP3上,两个系统上的问题都是相同的。

是否有人熟悉TSF足以知道为什么我无法根据Microsoft的文档获取界面?关于我可以尝试的任何想法?

HRESULT hr = ::CoInitialize(NULL); 
ITfThreadMgr * p = NULL; 
ITfThreadMgrEx * pe = NULL; 
hr = ::CoCreateInstance(CLSID_TF_ThreadMgr, NULL, CLSCTX_INPROC, IID_ITfThreadMgr, (void**)&p); 
hr = p->QueryInterface(IID_ITfThreadMgrEx, (void**)&pe); 

UPDATE: 一旦我安装远东语言,我可以得到ITfThreadMgr接口(在控制面板区域和语言)添加中文(中国),以语言栏。我可以使用CoCreateInstance()和TF_CreateThreadMgr()来获得这个接口。

但由于某些原因,与ITfThreadMgr QI'd直接相关的自定义TIP的UI组件的接口不可用。我可以从ITfThreadMgr.QueryInterface获得其他接口,例如ITfClientId和ITfMessagePump,但我无法获得ITfUIElementMgr和ITfThreadMgrEx。

这就像自定义绘制TIP UI的功能一样,没有安装或启用。但我不确定这是否是正确的方向。

回答

1

ITfThreadMgrEx和ITfUIElementMgr仅在Vista及更高版本上可用。 MSDN的文档在这里是错误的。

相关问题