Win32 API 日本語リファレンス
ホームUI.TextServices › ITfThreadMgr2

ITfThreadMgr2

COM
IID0ab198ef-6477-4ee8-8812-6780edb82d5e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ITfThreadMgr2 は、TSF マネージャーが実装する中心的なオブジェクトを定義します。ITfThreadMgr2 は、アプリケーションおよびテキストサービスが、テキストサービスの有効化と無効化、ドキュメントマネージャーの作成、ドキュメントコンテキストのフォーカス管理を行うために使用します。

メソッド 14

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Activate(DWORD* ptid)

呼び出し元スレッドに対して TSF を有効化します。

ptidDWORD*outクライアント識別子を受け取る TfClientId 値へのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
ptid が無効です。
E_UNEXPECTED
スレッドが無効化されている状態でこのメソッドが呼び出されました。

解説(Remarks)

このメソッドは 1 つのスレッドから複数回呼び出すことができますが、各呼び出しは同じスレッドからの対応する Deactivate の呼び出しと対にする必要があります。

vtbl 4 HRESULT Deactivate()

呼び出し元スレッドに対して TSF を無効化します。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_UNEXPECTED
スレッドが有効化されている状態でこのメソッドが呼び出されたか、この呼び出しに対応する Activate の呼び出しがありません。

解説(Remarks)

このメソッドの各呼び出しは、事前の Activate の呼び出しと対にする必要があります。このメソッドは、対応する Activate を呼び出したスレッドと同じスレッドから呼び出す必要があります。

vtbl 5 HRESULT CreateDocumentMgr(ITfDocumentMgr** ppdim)

ドキュメントマネージャーオブジェクトを作成します。

ppdimITfDocumentMgr**outドキュメントマネージャーオブジェクトを受け取る ITfDocumentMgr インターフェイスへのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
ppdim が無効です。
E_OUTOFMEMORY
メモリの割り当てに失敗しました。

解説(Remarks)

呼び出し元は、ドキュメントマネージャーが不要になった時点で解放する必要があります。

vtbl 6 HRESULT EnumDocumentMgrs(IEnumTfDocumentMgrs** ppEnum)

呼び出し元スレッド内のすべてのドキュメントマネージャーを列挙する列挙子を返します。

ppEnumIEnumTfDocumentMgrs**out列挙子を受け取る IEnumTfDocumentMgrs インターフェイスへのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
ppEnum が無効です。
E_OUTOFMEMORY
メモリの割り当てに失敗しました。
E_FAIL
原因不明のエラーが発生しました。

解説(Remarks)

呼び出し元は、列挙子が不要になった時点で解放する必要があります。

vtbl 7 HRESULT GetFocus(ITfDocumentMgr** ppdimFocus)

入力フォーカスを持つドキュメントマネージャーを返します。

ppdimFocusITfDocumentMgr**out現在入力フォーカスを持つドキュメントマネージャーを受け取る ITfDocumentMgr インターフェイスへのポインター。フォーカスを持つドキュメントマネージャーが存在しない場合は NULL を受け取ります。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
S_FALSE
フォーカスを持つドキュメントマネージャーがありません。ppdimFocus には NULL が設定されます。
E_INVALIDARG
ppdimFocus が無効です。
vtbl 8 HRESULT SetFocus(ITfDocumentMgr* pdimFocus)

指定したドキュメントマネージャーに入力フォーカスを設定します。

pdimFocusITfDocumentMgr*in入力フォーカスを受け取る ITfDocumentMgr インターフェイスへのポインター。このパラメーターに NULL を指定することはできません。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pdimFocus が無効です。

解説(Remarks)

アプリケーションは、ドキュメントウィンドウが入力フォーカスを受け取ったときにこのメソッドを呼び出す必要があります。アプリケーションが ITfThreadMgr::AssociateFocus を使用してウィンドウとドキュメントマネージャーを関連付けている場合は、TSF マネージャーがアプリケーションに代わってこのメソッドを呼び出します。

vtbl 9 HRESULT IsThreadFocus(BOOL* pfThreadFocus)

呼び出し元スレッドが TSF の入力フォーカスを持っているかどうかを判定します。

pfThreadFocusBOOL*out呼び出し元スレッドが入力フォーカスを持っているかどうかを示す値を受け取る BOOL へのポインター。呼び出し元スレッドがフォーカスを持つ場合は 0 以外の値、持たない場合は 0 を受け取ります。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pfThreadFocus が無効です。
vtbl 10 HRESULT GetFunctionProvider(GUID* clsid, ITfFunctionProvider** ppFuncProv)

指定したファンクションプロバイダーオブジェクトを取得します。

clsidGUID*in

取得するファンクションプロバイダーの CLSID。呼び出し元スレッドに対して登録されたファンクションプロバイダーの CLSID、または次の定義済みの値のいずれかを指定できます。

意味
GUID_SYSTEM_FUNCTIONPROVIDER
TSF システムファンクションプロバイダーを取得します。
GUID_APP_FUNCTIONPROVIDER
現在のアプリケーションが実装するファンクションプロバイダーを取得します。アプリケーションが自身をファンクションプロバイダーとして登録していない場合、このオブジェクトは利用できません。
ppFuncProvITfFunctionProvider**outファンクションプロバイダーを受け取る ITfFunctionProvider インターフェイスへのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
TF_E_NOPROVIDER
clsid に一致するファンクションプロバイダーが利用できませんでした。
E_FAIL
GUID_SYSTEM_FUNCTIONPROVIDER が要求されましたが、取得できません。

解説(Remarks)

ファンクションプロバイダーは、TSF マネージャーの ITfSourceSingle::AdviseSingleSink メソッドを IID_ITfFunctionProvider を指定して呼び出すことで登録されます。

vtbl 11 HRESULT EnumFunctionProviders(IEnumTfFunctionProviders** ppEnum)

呼び出し元スレッドに対して登録されているすべてのファンクションプロバイダーを列挙する列挙子を取得します。

ppEnumIEnumTfFunctionProviders**outファンクションプロバイダーの列挙子を受け取る IEnumTfFunctionProviders インターフェイスのアドレス。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
ppEnum が無効です。
E_OUTOFMEMORY
メモリの割り当てに失敗しました。
E_FAIL
原因不明のエラーが発生しました。

解説(Remarks)

この列挙子には、登録されたファンクションプロバイダーのみが含まれます。GetFunctionProvider で説明されている定義済みのファンクションプロバイダーは含まれません。

ファンクションプロバイダーは、TSF マネージャーの ITfSourceSingle::AdviseSingleSink メソッドを IID_ITfFunctionProvider を指定して呼び出すことで自身を登録します。

vtbl 12 HRESULT GetGlobalCompartment(ITfCompartmentMgr** ppCompMgr)

グローバルコンパートメントマネージャーオブジェクトを取得します。

ppCompMgrITfCompartmentMgr**outグローバルコンパートメントマネージャーを受け取る ITfCompartmentMgr インターフェイスへのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
ppCompMgr が無効です。
vtbl 13 HRESULT ActivateEx(DWORD* ptid, DWORD dwFlags)

TSF の有効化方法を指定するフラグを伴って、呼び出し元スレッドに対して TSF を初期化し有効化します。

ptidDWORD*out[out] クライアント識別子を受け取る TfClientId 値へのポインター。
dwFlagsDWORDin
意味
TF_TMAE_NOACTIVATETIP
このメソッドの呼び出し時にはテキストサービスは有効化されません。テキストサービスは、呼び出し元スレッドがフォーカスを得たときに非同期に有効化されます。
TF_TMAE_SECUREMODE
TSF はセキュアモードで有効化されます。セキュアモードをサポートするテキストサービスのみが有効化されます。
TF_TMAE_UIELEMENTENABLEDONLY
TSF は、GUID_TFCAT_TIPCAP_UIELEMENTENABLED に分類されるテキストサービスのみを有効化します。
TF_TMAE_COMLESS
TSF は COM を使用しません。TSF は、GUID_TFCAT_TIPCAP_COMLESS に分類されるテキストサービスのみを有効化します。
TF_TMAE_NOACTIVATEKEYBOARDLAYOUT
このメソッドの呼び出し時に、TSF は現在のキーボードレイアウトを同期しません。キーボードレイアウトは、呼び出し元スレッドがフォーカスを得たときに調整されます。このフラグは TF_TMAE_NOACTIVATETIP と併用する必要があります。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_FAIL
原因不明のエラーが発生しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。
vtbl 14 HRESULT GetActiveFlags(DWORD* lpdwFlags)

呼び出し元スレッドのアクティブフラグを取得します。

lpdwFlagsDWORD*out

TSF のアクティブフラグを受け取る DWORD 値へのポインター。

意味
TF_TMF_NOACTIVATETIP TSF は TF_TMAE_NOACTIVATETIP フラグを指定して有効化されました。
TF_TMF_SECUREMODE TSF はセキュアモードで動作しています。
TF_TMF_UIELEMENTENABLEDONLY TSF は UIElement のみをサポートするテキストサービスで動作しています。
TF_TMF_COMLESS TSF は COM を使用せずに動作しています。
TF_TMF_WOW16 TSF は 16 ビットタスクで動作しています。
TF_TMF_CONSOLE TSF はコンソール向けに動作しています。
TF_TMF_IMMERSIVEMODE Windows 8 以降: TSF は Windows ストアアプリでアクティブです。
TF_TMF_ACTIVATED TSF はアクティブです。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_FAIL
原因不明のエラーが発生しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。
vtbl 15 HRESULT SuspendKeystrokeHandling()

キーストロークの処理を中断します。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
vtbl 16 HRESULT ResumeKeystrokeHandling()

中断されていたキーストロークの処理を再開します。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。