Я столкнулся с проблемой с моей системой XP Professional при работе с Text Services Framework.Я хочу получить интерфейс ITfThreadMgrEx от ITfThreadMgr.Согласно Microsoft, ITfThreadMgr.QueryInterface () используется для получения ITfThreadMgrEx.Когда я попробовал это в C ++, я вернулся E_NOINTERFACE.Согласно Microsoft, 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);
ОБНОВЛЕНИЕ: я могу получить интерфейс ITfThreadMgr, как только я установлю языки Дальнего Востока и добавлю китайский (PRC) в языковую панель (Язык и региональные стандарты на панели управления).).Я могу получить этот интерфейс, используя CoCreateInstance (), а также TF_CreateThreadMgr ().
Но по какой-то причине интерфейсы, которые QI'd из ITfThreadMgr, которые непосредственно связаны с настройкой компонентов пользовательского интерфейса TIP, не являютсяимеется в наличии.Я могу получить другие интерфейсы из ITfThreadMgr.QueryInterface, такие как ITfClientId и ITfMessagePump, но не могу получить ни ITfUIElementMgr, ни ITfThreadMgrEx.
Это похоже на возможность пользовательского рисования пользовательского интерфейса TIP просто не установлена или включена.Но я не уверен, что это правильное направление.