今回は、リストビューを詳細表示します。次に、詳細表示の例を示します。詳細表示であるリストビューには列という概念があります。表を作成したい場合などに利用できます。詳細表示における1つの列はカラムとして識別されるため、ListView_InsertColumnでカラムを追加することになります。pcol);hwndは、リストビューのハンドルを指定します。iColは、カラムのインデックスを指定します。pcolは、LVCOLUMN構造体のアドレスを指定します。LVCOLUMN構造体は、次のように定義されています。*LPLVCOLUMN;maskは、使用するメンバを表す定数を指定します。fmtは、カラムのフォーマットを定義する定数を指定します。cxは、カラムの幅を指定します。pszTextは、カラムのテキストを指定します。cchTextMaxは、pszTextのサイズを指定します。iSubItemは、カラムに関連付けられたインデックスを指定します。iImageは、イメージリストのインデックスを指定します。iOrderは、カラムのオフセットを指定します。cxMinは、カラムの最小の幅を指定します。cxDefaultは、カラムのデフォルト幅を指定します。cxIdealは、カラムの理想的な幅を指定します。カラムに関する情報を取得するには、ListView_GetColumnを呼び出します。pcol);hwndは、リストビューのハンドルを指定します。iColは、カラムのインデックスを指定します。pcolは、LVCOLUMN構造体のアドレスを指定します。2列目や3列目にアイテムを設定することができます。したアイテムはサブアイテムと呼ばれ、ListView_SetItemで設定します。pitem);hwndは、リストビューのハンドルを指定します。pitemは、LVITEM構造体のアドレスを指定します。今回のプログラムは、詳細表示のリストビューを作成します。カラムが選択された場合は、カラムの名前を表示します。lParam);}詳細表示のリストビューを作成するには、ウインドウスタイルにLVS_REPORTを指定します。cxとpszTextが考慮されるようにしておきます。2回目の呼び出しではインデックスを1つカウントすることになります。2列目のサブアイテムについてはListView_SetItemで追加します。このとき、サブアイテムのインデックスであるiSubItemを1つカウントしておきます。カラムがクリックされた場合は、通知コードがLVN_COLUMNCLICKであるWM_NOTIFYが送られます。iSubItemからクリックされたカラムのインデックスを特定することができます。今回はカラムのテキストを取得するため、LVCOLUMNのmaskにLVCF_TEXTを指定してListView_GetColumnを呼び出します。ラベルの編集ListView_InsertItemで追加されたアイテムは、動的にラベル(テキスト)を変更することができるようになっています。エディットコントロールが表示されるため、そこに変更したいテキストを入力することになります。次に、ラベルの編集を有効にする例を示します。lParam);}ウインドウスタイルにLVS_EDITLABELSを指定するとラベルの編集が有効になります。ListView_GetEditControlを呼び出すことでエディットコントロールのハンドルを取得することができます。エディットコントロールに入力された文字列を取得することができます。後はこれをListView_SetItemTextに指定すれば、アイテムのテキストは変更されることになります。