【问题标题】:Cannot get ITfThreadMgrEx on my XP Professional System无法在我的 XP Professional 系统上获取 ITfThreadMgrEx
【发布时间】:2011-06-23 04:25:14
【问题描述】:

我在使用文本服务框架时遇到了 XP Professional 系统的问题。我想从 ITfThreadMgr 获取 ITfThreadMgrEx 接口。根据微软的说法,ITfThreadMgr.QueryInterface() 用于获取 ITfThreadMgrEx。当我在 C++ 中尝试这个时,我得到了 E_NOINTERFACE。据微软称,ITfThreadMgrEx 在 Windows 2000 TSF 1.0 上可用。所以我很自然地认为它会在 XP Professional 上可用。

另外,我在 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);

更新: 一旦我安装了远东语言并将中文(PRC)添加到语言栏(控制面板中的区域和语言),我可以获得ITfThreadMgr界面。我可以使用 CoCreateInstance() 和 TF_CreateThreadMgr() 来获得这个接口。

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

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

【问题讨论】:

    标签: c++ ime text-services-framework


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-15
      • 2015-12-06
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 2012-11-29
      相关资源
      最近更新 更多