ITfTextInputProcessor
COM公式ドキュメント
ITfTextInputProcessor インターフェイスはテキストサービスによって実装され、TSF マネージャーがテキストサービスを有効化および無効化するために使用します。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ITfTextInputProcessor::Activate メソッド
| ptim | ITfThreadMgr* | in | テキストサービスを所有するスレッドマネージャーの ITfThreadMgr インターフェイスへのポインター。 |
| tid | DWORD | in | テキストサービスのクライアント識別子を指定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
TSF は、CoCreateInstance の呼び出しによってテキストサービスのインスタンスを作成した後、このメソッドを呼び出します。これにより、テキストサービスの開始に必要な処理を行うことができます。
このメソッドでは通常、セッションのスレッドマネージャーへの参照を追加し、フォーカスの変更、キーストローク、ウィンドウイベントなど、テキストサービスに関わるイベントのシンクをアドバイズします。また、テキストサービス用に言語バーをカスタマイズします。
テキストサービスを終了させる対応する ITfTextInputProcessor::Deactivate メソッドでは、ptim パラメーターへのすべての参照を解放する必要があります。
ITfTextInputProcessor::Deactivate メソッド
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
TSF は、テキストサービスへの最後の参照を解放する直前にこのメソッドを呼び出します。これにより、テキストサービスを終了するために必要な処理を行うことができます。
このメソッドでは通常、テキストサービスに関わるイベントのシンクをアンアドバイズします。また、テキストサービスのユーザーインターフェイス要素を閉じることもできます。
このメソッドが返る前に、ITfTextInputProcessor::Activate メソッドによってテキストサービスに渡された ptim パラメーターへのすべての参照を解放する必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITfTextInputProcessor "{AA80E7F7-2021-11D2-93E0-0060B067B86E}"
#usecom global ITfTextInputProcessor IID_ITfTextInputProcessor "{}"
#comfunc global ITfTextInputProcessor_Activate 3 sptr,int
#comfunc global ITfTextInputProcessor_Deactivate 4
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。