ITfThreadMgr2
COM公式ドキュメント
ITfThreadMgr2 は、TSF マネージャーが実装する中心的なオブジェクトを定義します。ITfThreadMgr2 は、アプリケーションおよびテキストサービスが、テキストサービスの有効化と無効化、ドキュメントマネージャーの作成、ドキュメントコンテキストのフォーカス管理を行うために使用します。
メソッド 14
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
呼び出し元スレッドに対して TSF を有効化します。
| ptid | DWORD* | out | クライアント識別子を受け取る TfClientId 値へのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ptid が無効です。 | |
| スレッドが無効化されている状態でこのメソッドが呼び出されました。 |
解説(Remarks)
このメソッドは 1 つのスレッドから複数回呼び出すことができますが、各呼び出しは同じスレッドからの対応する Deactivate の呼び出しと対にする必要があります。
呼び出し元スレッドに対して TSF を無効化します。
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| スレッドが有効化されている状態でこのメソッドが呼び出されたか、この呼び出しに対応する Activate の呼び出しがありません。 |
解説(Remarks)
このメソッドの各呼び出しは、事前の Activate の呼び出しと対にする必要があります。このメソッドは、対応する Activate を呼び出したスレッドと同じスレッドから呼び出す必要があります。
ドキュメントマネージャーオブジェクトを作成します。
| ppdim | ITfDocumentMgr** | out | ドキュメントマネージャーオブジェクトを受け取る ITfDocumentMgr インターフェイスへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppdim が無効です。 | |
| メモリの割り当てに失敗しました。 |
解説(Remarks)
呼び出し元は、ドキュメントマネージャーが不要になった時点で解放する必要があります。
呼び出し元スレッド内のすべてのドキュメントマネージャーを列挙する列挙子を返します。
| ppEnum | IEnumTfDocumentMgrs** | out | 列挙子を受け取る IEnumTfDocumentMgrs インターフェイスへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppEnum が無効です。 | |
| メモリの割り当てに失敗しました。 | |
| 原因不明のエラーが発生しました。 |
解説(Remarks)
呼び出し元は、列挙子が不要になった時点で解放する必要があります。
入力フォーカスを持つドキュメントマネージャーを返します。
| ppdimFocus | ITfDocumentMgr** | out | 現在入力フォーカスを持つドキュメントマネージャーを受け取る ITfDocumentMgr インターフェイスへのポインター。フォーカスを持つドキュメントマネージャーが存在しない場合は NULL を受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| フォーカスを持つドキュメントマネージャーがありません。ppdimFocus には NULL が設定されます。 | |
| ppdimFocus が無効です。 |
指定したドキュメントマネージャーに入力フォーカスを設定します。
| pdimFocus | ITfDocumentMgr* | in | 入力フォーカスを受け取る ITfDocumentMgr インターフェイスへのポインター。このパラメーターに NULL を指定することはできません。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pdimFocus が無効です。 |
解説(Remarks)
アプリケーションは、ドキュメントウィンドウが入力フォーカスを受け取ったときにこのメソッドを呼び出す必要があります。アプリケーションが ITfThreadMgr::AssociateFocus を使用してウィンドウとドキュメントマネージャーを関連付けている場合は、TSF マネージャーがアプリケーションに代わってこのメソッドを呼び出します。
呼び出し元スレッドが TSF の入力フォーカスを持っているかどうかを判定します。
| pfThreadFocus | BOOL* | out | 呼び出し元スレッドが入力フォーカスを持っているかどうかを示す値を受け取る BOOL へのポインター。呼び出し元スレッドがフォーカスを持つ場合は 0 以外の値、持たない場合は 0 を受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pfThreadFocus が無効です。 |
指定したファンクションプロバイダーオブジェクトを取得します。
| clsid | GUID* | in | 取得するファンクションプロバイダーの CLSID。呼び出し元スレッドに対して登録されたファンクションプロバイダーの CLSID、または次の定義済みの値のいずれかを指定できます。
| ||||||
| ppFuncProv | ITfFunctionProvider** | out | ファンクションプロバイダーを受け取る ITfFunctionProvider インターフェイスへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| clsid に一致するファンクションプロバイダーが利用できませんでした。 | |
| GUID_SYSTEM_FUNCTIONPROVIDER が要求されましたが、取得できません。 |
解説(Remarks)
ファンクションプロバイダーは、TSF マネージャーの ITfSourceSingle::AdviseSingleSink メソッドを IID_ITfFunctionProvider を指定して呼び出すことで登録されます。
呼び出し元スレッドに対して登録されているすべてのファンクションプロバイダーを列挙する列挙子を取得します。
| ppEnum | IEnumTfFunctionProviders** | out | ファンクションプロバイダーの列挙子を受け取る IEnumTfFunctionProviders インターフェイスのアドレス。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppEnum が無効です。 | |
| メモリの割り当てに失敗しました。 | |
| 原因不明のエラーが発生しました。 |
解説(Remarks)
この列挙子には、登録されたファンクションプロバイダーのみが含まれます。GetFunctionProvider で説明されている定義済みのファンクションプロバイダーは含まれません。
ファンクションプロバイダーは、TSF マネージャーの ITfSourceSingle::AdviseSingleSink メソッドを IID_ITfFunctionProvider を指定して呼び出すことで自身を登録します。
グローバルコンパートメントマネージャーオブジェクトを取得します。
| ppCompMgr | ITfCompartmentMgr** | out | グローバルコンパートメントマネージャーを受け取る ITfCompartmentMgr インターフェイスへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppCompMgr が無効です。 |
TSF の有効化方法を指定するフラグを伴って、呼び出し元スレッドに対して TSF を初期化し有効化します。
| ptid | DWORD* | out | [out] クライアント識別子を受け取る TfClientId 値へのポインター。 | ||||||||||||
| dwFlags | DWORD | in |
|
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 原因不明のエラーが発生しました。 | |
| 1 つ以上のパラメーターが無効です。 |
呼び出し元スレッドのアクティブフラグを取得します。
| lpdwFlags | DWORD* | out | TSF のアクティブフラグを受け取る DWORD 値へのポインター。
|
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 原因不明のエラーが発生しました。 | |
| 1 つ以上のパラメーターが無効です。 |
キーストロークの処理を中断します。
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
中断されていたキーストロークの処理を再開します。
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITfThreadMgr2 "{0AB198EF-6477-4EE8-8812-6780EDB82D5E}" #usecom global ITfThreadMgr2 IID_ITfThreadMgr2 "{}" #comfunc global ITfThreadMgr2_Activate 3 var #comfunc global ITfThreadMgr2_Deactivate 4 #comfunc global ITfThreadMgr2_CreateDocumentMgr 5 sptr #comfunc global ITfThreadMgr2_EnumDocumentMgrs 6 sptr #comfunc global ITfThreadMgr2_GetFocus 7 sptr #comfunc global ITfThreadMgr2_SetFocus 8 sptr #comfunc global ITfThreadMgr2_IsThreadFocus 9 var #comfunc global ITfThreadMgr2_GetFunctionProvider 10 var,sptr #comfunc global ITfThreadMgr2_EnumFunctionProviders 11 sptr #comfunc global ITfThreadMgr2_GetGlobalCompartment 12 sptr #comfunc global ITfThreadMgr2_ActivateEx 13 var,int #comfunc global ITfThreadMgr2_GetActiveFlags 14 var #comfunc global ITfThreadMgr2_SuspendKeystrokeHandling 15 #comfunc global ITfThreadMgr2_ResumeKeystrokeHandling 16 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ITfThreadMgr2 "{0AB198EF-6477-4EE8-8812-6780EDB82D5E}" #usecom global ITfThreadMgr2 IID_ITfThreadMgr2 "{}" #comfunc global ITfThreadMgr2_Activate 3 sptr #comfunc global ITfThreadMgr2_Deactivate 4 #comfunc global ITfThreadMgr2_CreateDocumentMgr 5 sptr #comfunc global ITfThreadMgr2_EnumDocumentMgrs 6 sptr #comfunc global ITfThreadMgr2_GetFocus 7 sptr #comfunc global ITfThreadMgr2_SetFocus 8 sptr #comfunc global ITfThreadMgr2_IsThreadFocus 9 sptr #comfunc global ITfThreadMgr2_GetFunctionProvider 10 sptr,sptr #comfunc global ITfThreadMgr2_EnumFunctionProviders 11 sptr #comfunc global ITfThreadMgr2_GetGlobalCompartment 12 sptr #comfunc global ITfThreadMgr2_ActivateEx 13 sptr,int #comfunc global ITfThreadMgr2_GetActiveFlags 14 sptr #comfunc global ITfThreadMgr2_SuspendKeystrokeHandling 15 #comfunc global ITfThreadMgr2_ResumeKeystrokeHandling 16 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。