IHeaderCtrl
COM公式ドキュメント
列の操作を可能にし、コンソールの結果ビューペインに表示される情報の種類を示します。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
既定の結果ペインに列を追加します。
| nCol | INT | in | 挿入する列の 0 から始まるインデックスです。 |
| title | LPWSTR | in | 挿入する列のタイトルを表す文字列を指定する値です。この文字列は最大で MAX_PATH 文字の長さにできます。 |
| nFormat | INT | in | 列内でのテキストの配置位置を指定する値です。列 0 では、nFormat は LVCFMT_LEFT でなければなりません。この値は次のいずれかである必要があります。 LVCFMT_LEFTテキストは左揃えになります。 LVCFMT_CENTERテキストは中央揃えになります。 LVCFMT_RIGHTテキストは右揃えになります。 メモ LVCFMT_* 定数を使用するには、ソースファイルに CommCtrl.h をインクルードしてください。
|
| nWidth | INT | in | 列の幅をピクセル単位で指定する値です。この値は次のいずれかである必要があります。 MMCLV_AUTOMMC は列のタイトル文字列に基づいて列の幅を自動的に決定します。 HIDE_COLUMNMMC 1.2 で導入されました。列は挿入されますが、非表示になります。ユーザーは リストビューをカスタマイズするときに列を表示状態にできることに注意してください。 MMC 1.2 SDK でビルドされ、それより古いバージョンの MMC で読み込まれるスナップインの場合、HIDE_COLUMN は幅 0 として解釈されます。ユーザーはマウスで列をドラッグして幅を広げることができます。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
解説(Remarks)
MMC は IHeaderCtrl::InsertColumn の動作によって列セットに加えられた変更をメモリ内に保持しないため、スナップインは列セットに列を挿入した後、保持されている列の構成データを更新する必要があります。詳細については、 IHeaderCtrl2 and Column Persistence を参照してください。
呼び出し元へのメモ
結果ビューに既に項目が挿入されている場合、 InsertColumn の呼び出しは失敗します。結果ビューのヘッダーから列を削除します。
| nCol | INT | in | 削除する列を識別する 0 から始まるインデックスです。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
解説(Remarks)
列が削除されると、削除された列より大きいインデックスを持つすべての列は 1 つずつ繰り下げられます。
MMC は IHeaderCtrl::DeleteColumn の動作によって列セットに加えられた変更をメモリ内に保持しないため、スナップインは列セットから列を削除した後、保持されている列の構成データを更新する必要があります。詳細については、 IHeaderCtrl2 and Column Persistence を参照してください。
呼び出し元へのメモ
結果ビューに既に項目が挿入されている場合、このメソッドは E_FAIL を返します。特定の列のタイトルのテキストを設定します。
| nCol | INT | in | 列の位置を指定する 0 から始まるインデックスです。 |
| title | LPWSTR | in | 挿入する列のタイトルを表す文字列へのポインターです。この文字列は最大で MAX_PATH 文字の長さにできます。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
指定した列からテキストを取得します。
| nCol | INT | in | テキストを取得する列を識別する 0 から始まるインデックスです。 |
| pText | LPWSTR* | out | 取得するテキストのアドレスへのポインターです。このポインターは NULL であってはなりません。ユーザーは返されたテキストに対して CoTaskMemFree を呼び出す必要があります。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
解説(Remarks)
GetColumnText は結果用の文字列を割り当て、そのポインターを pText で指定された場所に格納します。呼び出し元は CoTaskMemFree を使用してメモリを解放する必要があります。
特定の列の幅をピクセル単位で設定します。
| nCol | INT | in | 結果ペイン内の他の列を基準とした列の位置を指定する 0 から始まるインデックスです。 |
| nWidth | INT | in | 列の幅を指定する値です。この値はピクセル単位である必要がありますが、次の値を指定することもできます。 MMCLV_AUTOMMC は列のタイトルのテキストの幅に基づいて列の幅を自動的に決定します。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
解説(Remarks)
MMC は IHeaderCtrl::SetColumnWidth の動作によって列セットに加えられた変更をメモリ内に保持しないため、スナップインは列セット内の列の幅を変更した後、保持されている列の構成データを更新する必要があります。詳細については、 IHeaderCtrl2 and Column Persistence を参照してください。
nWidth パラメーターの HIDE_COLUMN フラグは SetColumnWidth ではサポートされていません。スナップインが列を非表示にする必要がある場合は、IConsole::SelectScopeItem を呼び出してスコープ項目を選択し直し、その結果として呼び出されるスナップインの MMCN_SHOW 通知ハンドラーの中で、列を挿入する際 (IHeaderCtrl::InsertColumn の呼び出しで) nWidth=HIDE_COLUMN を使用する必要があります。
列の幅をピクセル単位で取得します。
| nCol | INT | in | 幅を取得する列の 0 から始まるインデックスです。 |
| pWidth | INT* | out | 列の幅 (ピクセル単位) へのポインターです。このパラメーターは NULL であってはなりません。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
解説(Remarks)
このメソッドは、リストに既に項目が存在する場合でも正常に呼び出すことができます。
列が現在非表示になっている場合、 GetColumnWidth は列の幅として 0 (ゼロ) を返します。ただし、列は非表示でなくても幅が 0 (ゼロ) になることがあるため、戻り値が 0 (ゼロ) であっても列が非表示であるとは限りません。したがって、スナップインは IColumnData::GetColumnConfigData を呼び出して、どの列が非表示になっているかを識別する必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IHeaderCtrl "{43136EB3-D36C-11CF-ADBC-00AA00A80033}" #usecom global IHeaderCtrl IID_IHeaderCtrl "{}" #comfunc global IHeaderCtrl_InsertColumn 3 int,wstr,int,int #comfunc global IHeaderCtrl_DeleteColumn 4 int #comfunc global IHeaderCtrl_SetColumnText 5 int,wstr #comfunc global IHeaderCtrl_GetColumnText 6 int,var #comfunc global IHeaderCtrl_SetColumnWidth 7 int,int #comfunc global IHeaderCtrl_GetColumnWidth 8 int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IHeaderCtrl "{43136EB3-D36C-11CF-ADBC-00AA00A80033}" #usecom global IHeaderCtrl IID_IHeaderCtrl "{}" #comfunc global IHeaderCtrl_InsertColumn 3 int,wstr,int,int #comfunc global IHeaderCtrl_DeleteColumn 4 int #comfunc global IHeaderCtrl_SetColumnText 5 int,wstr #comfunc global IHeaderCtrl_GetColumnText 6 int,sptr #comfunc global IHeaderCtrl_SetColumnWidth 7 int,int #comfunc global IHeaderCtrl_GetColumnWidth 8 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。