2011-02-08 21 views
1

テキストサービスフレームワークで作業中にXP Professionalシステムに問題が発生しました。私はITfThreadMgrからITfThreadMgrExインターフェイスを取得したいと思います。 Microsoftによると、ITfThreadMgr.QueryInterface()はITfThreadMgrExを取得するために使用されます。これをC++で試したところ、E_NOINTERFACEが返されました。 Microsoftによると、ITfThreadMgrExはWindows 2000 TSF 1.0で利用可能です。だから私は当然それがXP Professionalで利用できると仮定した。私のXPプロフェッショナルシステムでITfThreadMgrExを取得できません

また、私はこのプログラムをWindows 7でも試してみましたが問題ありません。しかし、2つの異なるWindows XP Professional SP3の国際言語遠東言語サポートがインストールされている場合、両方のシステムで同じ問題が発生します。

Microsoftの文書に基づいてインターフェースを取得できない理由を知るには、TSFに詳しい人はいますか?私は何を試すことができますか?

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: 私は極東の言語をインストールし、言語バー(コントロールパネルの地域と言語)に中国(PRC)を追加すると、私はITfThreadMgrインターフェイスを取得することができます。 CoCreateInstance()とTF_CreateThreadMgr()を使用してこのインターフェイスを取得できます。

しかし、TIPのUIコンポーネントのカスタマイズに直接関係するITfThreadMgrからのQIのインターフェイスは使用できません。私はITfClientIdやITfMessagePumpのようなITfThreadMgr.QueryInterfaceから他のインターフェースを得ることができますが、ITfuiElementMgrやITfThreadMgrExは取得できません。

TIP UIをカスタム描画する機能は、インストールされていないか、または有効になっていません。しかし、それが正しい方向であるかどうかはわかりません。

答えて

1

ITfThreadMgrExとITfUIElementMgrはVista以上でのみ利用できます。ここのMSDNのドキュメントは間違っています。

関連する問題