若想在不支持 TSF 的軟件試用 TSF, 在 Windows 2000 以後的版本可設定 CUAS(Cicero Unaware Application Support) 來達成.經過測試, 在不支持 TSF 的軟體上想要取得 Candidate window 位置, 便要使用 composition 和插入字元. 使用 GetGUIThreadInfo() 對於使用 Custom Control 的軟件不支持, 例如 firefox.而在支持 TSF 的軟體上, 隨時也可以用 Context View 呼叫 GetTextExt 取得位置資訊.
問題: 在 CUAS 模式下, 有甚麼方法可以不用建立 composition( ITfContextComposition->StartComposition() ) 和插入字元便可取得正確的 candidate window 位置?

解决方案 »

  1.   

    個人研究下, 當使用 CUAS 模式, 便會調動了 CicBridge 的類來模擬 IME 的訊息.故猜想在特定條件下, 如 composition + (set text / insert text) 便會把 application 通知 IME 的 candidate window position 訊息轉化為 GetTextExt() 可取的資料.若要証明這個關係, 或找出其他成因, 便要努力的解 MSCTF.dll. 現在不想花太多時間, 暫時以模擬 escape 鍵以取消 composition 的方法來"不留痕跡"地繞過吧.要結貼了, 大家來取分啊~~~