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

IColumnManager

COM
IIDd8ec27bb-3f3b-4042-b10a-4acfd924d453継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Windows エクスプローラーの詳細ビューにおける列の検査と操作を可能にするメソッドを公開します。各列は、プロパティを指定する PROPERTYKEY 構造体によって参照されます。

解説(Remarks)

このインターフェイスは、Windows エクスプローラーのウィンドウがアイコン、縮小版、並べて表示などの列以外のビューモードにある場合でもアクセスできます。これらのビューに加えて、列ヘッダーコントロールが IColumnManager を通じてアクセスできる列のセットを表示するビューにも影響します。

SHCreateShellFolderViewEx によって作成される Windows エクスプローラービューオブジェクトの既定の実装は、QueryInterface を通じて取得されるこのインターフェイスをサポートします。Windows エクスプローラー内で実行されるコード(ビューコールバック、コンテキストメニュー、ドロップターゲットなど)は、IServiceProvider::QueryService を使用し、SID_SFolderView を照会することでビューオブジェクトにアクセスできます。

メソッド 5

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

vtbl 3 HRESULT SetColumnInfo(PROPERTYKEY* propkey, CM_COLUMNINFO* pcmci)

指定した列の状態を設定します。

propkeyPROPERTYKEY*in列を識別する PROPERTYKEY 構造体への参照です。
pcmciCM_COLUMNINFO*inこの列に設定する状態を格納する CM_COLUMNINFO 構造体へのポインターです。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値 説明
S_OK
列の状態が設定されました。
failure
列の状態が設定されませんでした。
E_INVALIDARG
pcmci パラメーターが NULL です。
vtbl 4 HRESULT GetColumnInfo(PROPERTYKEY* propkey, CM_COLUMNINFO* pcmci)

各列に関する情報(幅、表示状態、表示名、状態)を取得します。

propkeyPROPERTYKEY*inPROPERTYKEY 構造体への参照です。
pcmciCM_COLUMNINFO*inoutCM_COLUMNINFO 構造体へのポインターです。呼び出し時には、取得する情報を指定するためにこの構造体の dwMask メンバーを設定します。また、cbSize メンバーも設定します。このメソッドが正常に返ると、構造体には要求された情報が格納されます。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値 説明
S_OK
列情報が取得されました。
failure
列情報が取得されませんでした。
E_INVALIDARG
pcmci の cbSize メンバーが CM_COLUMNINFO のサイズと一致しないことを示します。
vtbl 5 HRESULT GetColumnCount(CM_ENUM_FLAGS dwFlags, DWORD* puCount)

表示されている列、または列の完全なセットのいずれかについて、列数を取得します。

dwFlagsCM_ENUM_FLAGSin表示されている列のみを対象とするか、表示状態にかかわらずすべての列を対象とするかを指定する CM_ENUM_FLAGS 列挙体の値です。
puCountDWORD*out列数へのポインターを格納します。

戻り値

型: HRESULT

常に S_OK を返します。

vtbl 6 HRESULT GetColumns(CM_ENUM_FLAGS dwFlags, PROPERTYKEY* rgkeyOrder, DWORD cColumns)

ビューがサポートする列を表す PROPERTYKEY 構造体の配列を取得します。すべての列、または現在表示されている列のみを含みます。

dwFlagsCM_ENUM_FLAGSin表示されている列のみを対象とするか、表示状態にかかわらずすべての列を対象とするかを指定する CM_ENUM_FLAGS 列挙体の値です。
rgkeyOrderPROPERTYKEY*out成功時に、列を表す PROPERTYKEY 構造体の配列へのポインターを格納します。
cColumnsDWORDinrgkeyOrder 配列の長さです。

戻り値

型: HRESULT

次のいずれかの値を返します:

戻り値 説明
S_OK
コレクションが取得されました。
failure
すべての列が PROPERTYKEY 構造体にマップされませんでした。
E_INVALIDARG
cColumns の値が dwFlags の値と矛盾しています。
vtbl 7 HRESULT SetColumns(PROPERTYKEY* rgkeyOrder, DWORD cVisible)

ビューに表示する列のコレクションを設定します。

rgkeyOrderPROPERTYKEY*in表示する列を指定する PROPERTYKEY 構造体の配列へのポインターです。
cVisibleDWORDinrgkeyOrder 配列のサイズです。

戻り値

型: HRESULT

次のいずれかの値を返します:

戻り値 説明
S_OK
コレクションが設定されました。
failure
コレクションが設定されませんでした。

解説(Remarks)

注意 IColumnManager::SetColumns はすべての列の状態をクリアするため、個々の列の状態を設定するにはその後に IColumnManager::SetColumnInfo を呼び出す必要があります。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IColumnManager "{D8EC27BB-3F3B-4042-B10A-4ACFD924D453}"
#usecom global IColumnManager IID_IColumnManager "{}"
#comfunc global IColumnManager_SetColumnInfo   3 var,var
#comfunc global IColumnManager_GetColumnInfo   4 var,var
#comfunc global IColumnManager_GetColumnCount  5 int,var
#comfunc global IColumnManager_GetColumns      6 int,var,int
#comfunc global IColumnManager_SetColumns      7 var,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。