WindowsAPI(Win32API) Advent Calendar 2015 6日目
WindowsAPI(Win32API) Advent Calendar 2015 - Adventar

ListView_InsertColumnは、リストビューの列名を追加するマクロ・・・。

ListView_InsertColumn macro (Windows)

API関数のように見えるが、実際は関数マクロ・・・。

レポート形式のリストビューでは、1つの行項目に複数の列項目を設定できるので、ヘッダ部分に表示される列名を追加する必要がある・・・。
そのときにこれを使う・・・。

ListView_InsertColumn.rcで、

スタイルをレポート形式(LVS_REPORT)にしておく・・・。

DialogProcのWM_INITDIALOGの時、

LVCOLUMN構造体変数のcolumn1に、名前を表示する列Nameに関する情報をセットする・・・。
maskには、この構造体変数にどんな項目を設定するかを設定している・・・。
たとえば、この場合はfmt, cx, pszText, iSubItemを設定するので、

こんな風にマクロのOR演算でセット・・・。
でそれらのパラメータは、

このようにセット・・・。
iSubItemは何列目かということ・・・。0列目・・・。

1列目はcolumn2で住所(Address)、2列目はcolumn3で電話番号(PhoneNumber)をセットする・・・。

ListView_InsertColumnでcolumn1, column2, column3を追加していく・・・。

これで実行してダイアログを表示すると、

f:id:BG1:20151206150823p:plain

ヘッダ部分に、列名のName, Address, PhoneNumberが表示される・・・。

Sample/ListView_InsertColumn.cpp at master · bg1bgst333/Sample · GitHub
Sample/resource.h at master · bg1bgst333/Sample · GitHub
Sample/ListView_InsertColumn.rc at master · bg1bgst333/Sample · GitHub