ITfCategoryMgr
COM公式ドキュメント
ITfCategoryMgr インターフェイスは、テキストサービス向けにオブジェクトのカテゴリを管理します。このインターフェイスは TSF マネージャーが実装します。
メソッド 14
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ITfCategoryMgr::RegisterCategory メソッド
| rclsid | GUID* | in | 項目を所有するテキストサービスの CLSID を格納します。 |
| rcatid | GUID* | in | 項目を登録するカテゴリを識別する GUID 値を格納します。ユーザー定義のカテゴリ、または定義済みカテゴリ値のいずれかを指定できます。 |
| rguid | GUID* | in | 登録する項目を識別する GUID 値を格納します。 |
戻り値
ITfCategoryMgr::UnregisterCategory メソッド
| rclsid | GUID* | in | 項目を所有するテキストサービスの CLSID を格納します。 |
| rcatid | GUID* | in | 項目が登録されているカテゴリを識別する GUID を格納します。 |
| rguid | GUID* | in | 削除する項目を識別する GUID を格納します。 |
戻り値
ITfCategoryMgr::EnumCategoriesInItem メソッド
| rguid | GUID* | in | カテゴリを列挙する対象の項目を識別する GUID 値を格納します。 |
| ppEnum | IEnumGUID** | out | 列挙子を受け取る IEnumGUID インターフェイスポインターへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 原因不明のエラーが発生しました。 | |
| ppEnum が無効です。 | |
| 操作を実行するためのメモリが不足しています。 |
ITfCategoryMgr::EnumItemsInCategory メソッド
| rcatid | GUID* | in | 項目を列挙する対象のカテゴリを識別する GUID 値を格納します。 |
| ppEnum | IEnumGUID** | out | 列挙子を受け取る IEnumGUID インターフェイスポインターへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 原因不明のエラーが発生しました。 | |
| ppEnum が無効です。 | |
| 操作を実行するためのメモリが不足しています。 |
ITfCategoryMgr::FindClosestCategory メソッド
| rguid | GUID* | in | 最も近いカテゴリを検索する対象の GUID のアドレスを指定します。 |
| pcatid | GUID* | out | 最も近いカテゴリの CATID を受け取る GUID へのポインター。 |
| ppcatidList | GUID** | in | 最も近いカテゴリを検索する対象となる CATID の配列を指定するポインターへのポインター。 |
| ulCount | DWORD | in | ppcatidList パラメーターの配列の要素数を指定します。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドはカテゴリ一覧から最も近いカテゴリを取得しました。または、一覧からカテゴリを取得できず、そのことを pcatid パラメーターのポインターに GUID_NULL を設定することで示しています。 | |
| メソッドは指定された GUID に対するカテゴリを見つけられず、そのことを pcatid パラメーターのポインターに GUID_NULL を設定することで示しています。 | |
| メソッドが内部テーブルにアクセスできません。 | |
| 入力時に指定された pcatid パラメーターが NULL であったか、ulCount パラメーターが 0 以外のときにカテゴリ一覧に NULL 要素が含まれていました。 | |
| 操作を実行するためのメモリが不足しています。 |
解説(Remarks)
GUID に最も近いカテゴリは、2 つのモードのいずれかで選択されます。1 つ目のモードでは、メソッドは空でないカテゴリ一覧を受け取ります。この場合、その一覧から最初に一致する CATID を選択します。その GUID を含むカテゴリが一覧に存在しない場合は GUID_NULL を返します。2 つ目のモードでは、空のカテゴリ一覧を受け取ります。この場合、その GUID を含む最初のカテゴリを選択します。その GUID を含むカテゴリが存在しない場合は GUID_NULL を返します。
ITfCategoryMgr::RegisterGUIDDescription メソッド
| rclsid | GUID* | in | GUID を所有するテキストサービスの CLSID を格納します。 |
| rguid | GUID* | in | 説明を登録する対象の GUID を格納します。 |
| pchDesc | LPWSTR | in | GUID の説明を格納する WCHAR バッファーへのポインター。 |
| cch | DWORD | in | 説明文字列の長さを文字数単位で格納します。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メソッドは説明文字列を登録できませんでした。 | |
| pchDest が無効です。 |
ITfCategoryMgr::UnregisterGUIDDescription メソッド
| rclsid | GUID* | in | GUID を所有するテキストサービスの CLSID を格納します。 |
| rguid | GUID* | in | 説明を削除する対象の GUID を格納します。 |
戻り値
ITfCategoryMgr::GetGUIDDescription メソッド
| rguid | GUID* | in | 説明を取得する対象の GUID を指定します。 |
| pbstrDesc | LPWSTR* | out | 説明文字列を受け取る BSTR 値へのポインター。SysAllocString を使用して割り当てます。呼び出し元は不要になった時点で SysFreeString を使用してこのメモリを解放する必要があります。 説明文字列を受け取る BSTR 値へのポインター。これは SysAllocString を使用して割り当てる必要があります。呼び出し元は不要になった時点で SysFreeString を使用してこのメモリを解放する必要があります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メソッドは説明を取得できません。 | |
| pbstrDesc が無効です。 |
ITfCategoryMgr::RegisterGUIDDWORD メソッド
| rclsid | GUID* | in | GUID を所有するテキストサービスの CLSID を格納します。 |
| rguid | GUID* | in | DWORD を登録する対象の GUID を格納します。 |
| dw | DWORD | in | GUID に対して登録する DWORD 値を格納します。 |
戻り値
ITfCategoryMgr::UnregisterGUIDDWORD メソッド
| rclsid | GUID* | in | GUID を所有するテキストサービスの CLSID を格納します。 |
| rguid | GUID* | in | DWORD を削除する対象の GUID を格納します。 |
戻り値
ITfCategoryMgr::GetGUIDDWORD メソッド
| rguid | GUID* | in | 値を取得する対象の GUID のアドレスを指定します。 |
| pdw | DWORD* | out | GUID の値を受け取る DWORD 変数へのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メソッドは DWORD 値を取得できませんでした。 | |
| 入力時に指定された pdw パラメーターが NULL でした。 |
ITfCategoryMgr::RegisterGUID メソッド
| rguid | GUID* | in | 識別子を取得する対象の GUID を格納します。 |
| pguidatom | DWORD* | out | GUID の識別子を受け取る TfGuidAtom 値へのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 原因不明のエラーが発生しました。 | |
| pguidatom が無効です。 |
解説(Remarks)
同一の GUID 値には同一の TfGuidAtom 値が割り当てられます。
TfGuidAtom 値は、ITfCategoryMgr::RegisterGUID を呼び出したプロセス内でのみ有効です。
ITfCategoryMgr::GetGUID メソッド
| guidatom | DWORD | in | 取得する GUID を指定する TfGuidAtom 値を格納します。 |
| pguid | GUID* | out | 指定されたアトムに対応する GUID を受け取る GUID 値へのポインター。アトムに対応する GUID が見つからない場合は GUID_NULL を受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 原因不明のエラーが発生しました。 | |
| pguid が無効です。 |
ITfCategoryMgr::IsEqualTfGuidAtom メソッド
| guidatom | DWORD | in | 内部テーブル内の GUID を表すアトムを指定します。 |
| rguid | GUID* | in | 内部テーブル内のアトムと比較する GUID のアドレスを指定します。 |
| pfEqual | BOOL* | out | アトムがその GUID を表しているかどうかを受け取るブール変数へのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メソッドが内部テーブルにアクセスできません。 | |
| 入力時に指定された pfEqual パラメーターが NULL でした。 |
解説(Remarks)
guidatom パラメーターで指定されたアトムが rguid パラメーターで指定された GUID を表している場合、pfEqual パラメーターは 0 以外の値を受け取ります。それ以外の場合、pfEqual パラメーターは 0 を受け取ります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITfCategoryMgr "{C3ACEFB5-F69D-4905-938F-FCADCF4BE830}" #usecom global ITfCategoryMgr IID_ITfCategoryMgr "{}" #comfunc global ITfCategoryMgr_RegisterCategory 3 var,var,var #comfunc global ITfCategoryMgr_UnregisterCategory 4 var,var,var #comfunc global ITfCategoryMgr_EnumCategoriesInItem 5 var,sptr #comfunc global ITfCategoryMgr_EnumItemsInCategory 6 var,sptr #comfunc global ITfCategoryMgr_FindClosestCategory 7 var,var,var,int #comfunc global ITfCategoryMgr_RegisterGUIDDescription 8 var,var,wstr,int #comfunc global ITfCategoryMgr_UnregisterGUIDDescription 9 var,var #comfunc global ITfCategoryMgr_GetGUIDDescription 10 var,var #comfunc global ITfCategoryMgr_RegisterGUIDDWORD 11 var,var,int #comfunc global ITfCategoryMgr_UnregisterGUIDDWORD 12 var,var #comfunc global ITfCategoryMgr_GetGUIDDWORD 13 var,var #comfunc global ITfCategoryMgr_RegisterGUID 14 var,var #comfunc global ITfCategoryMgr_GetGUID 15 int,var #comfunc global ITfCategoryMgr_IsEqualTfGuidAtom 16 int,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ITfCategoryMgr "{C3ACEFB5-F69D-4905-938F-FCADCF4BE830}" #usecom global ITfCategoryMgr IID_ITfCategoryMgr "{}" #comfunc global ITfCategoryMgr_RegisterCategory 3 sptr,sptr,sptr #comfunc global ITfCategoryMgr_UnregisterCategory 4 sptr,sptr,sptr #comfunc global ITfCategoryMgr_EnumCategoriesInItem 5 sptr,sptr #comfunc global ITfCategoryMgr_EnumItemsInCategory 6 sptr,sptr #comfunc global ITfCategoryMgr_FindClosestCategory 7 sptr,sptr,sptr,int #comfunc global ITfCategoryMgr_RegisterGUIDDescription 8 sptr,sptr,wstr,int #comfunc global ITfCategoryMgr_UnregisterGUIDDescription 9 sptr,sptr #comfunc global ITfCategoryMgr_GetGUIDDescription 10 sptr,sptr #comfunc global ITfCategoryMgr_RegisterGUIDDWORD 11 sptr,sptr,int #comfunc global ITfCategoryMgr_UnregisterGUIDDWORD 12 sptr,sptr #comfunc global ITfCategoryMgr_GetGUIDDWORD 13 sptr,sptr #comfunc global ITfCategoryMgr_RegisterGUID 14 sptr,sptr #comfunc global ITfCategoryMgr_GetGUID 15 int,sptr #comfunc global ITfCategoryMgr_IsEqualTfGuidAtom 16 int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。