|
最近ウィンドウズ系アプリケーションに良く使われる「CListCtrl」について解析していきたいと思う。
まず、何も知らない事を前提に話をしていくつもりなので(私も知らない為)分かっている方は飛ばして頂いて構わないと思う。
CListCtrlとはエクスプローラの右側にあるようなコントロールを指す。 ここで筆者が一番興味を引いたのは「レポートビュー」なる表現方法であった。 レポートビューはエクスプローラの「表示」-「詳細」をしている時に見えるようなあらわしかたである。 その外にも「アイコンビュー」やらなにやらで色々出来るのであるが、ここはあえてレポートビューだけに的を絞って考えたいと思う。 |
|
|
|
エクスプローラの右側の部分で「表示」-「詳細」をしている時に上にみえる「名前」や「サイズ」や「ファイルの種類」の部分を「カラム」と呼んでいる。 このカラムはウィンドウスタイルの設定で「カラム無し」というのも指定できるが、あった方がスマートに見えるだろう。(勝手に) カラムの下には本体ともいえるデータが配置されている。 このデータの事を「アイテム」と呼ぶ。 アイテムは2種類存在し、片方を単純に「アイテム」と呼び、もう片方を「サブアイテム」と呼んでいる。 ここで、一番左側にあるデータの事を「アイテム」と呼び、二番目以降のデータを「サブアイテム」と呼んでいる。 |
|
|
|
以上が言葉の説明になる。 さて、リストコントロールを用いる為にはまず「CListCtrl」クラスを使うわけだが、リストコントロールクラスの他に構造体を使わなければならない。 その構造体は「LV_ITEM」と言う名前の構造体である。 詳細はヘルプを参照していただくとして、その使い方を紹介したい。 まず、カラムのセットまでを以下に示す。
void InitCorumn()
{
LV_COLUMN lvc;
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
//第一カラムの挿入
lvc.iSubItem = 0;
lvc.pszText = "第一カラム";
lvc.cx = 90;
m_LstCtrl.InsertColumn( 0, &lvc );
//第二カラムの挿入
lvc.iSubItem = 1;
lvc.pszText = "第二カラム";
lvc.cx = 280;
m_LstCtrl.InsertColumn( 1, &lvc );
//第三カラムの挿入
lvc.iSubItem = 2;
lvc.pszText = "第三カラム";
lvc.cx = 110;
m_LstCtrl.InsertColumn( 2, &lvc );
}
上記の関数でメンバー m_LstCtrl にカラムを設定できる。
ここでは、LV_ITEM構造体の内いくつかの機能を使った。
|
|
|
|
ヘルプを見れば分かると思うが、LV_ITEM 構造体では色々とオプションを付ける事が出来る。 そのうち使いたい機能だけをマスクとして設定し、データをセットする形になる。 例えば、テキストだけしか使用しない場合は、
void InitCorumn()
{
LV_ITEM lvc;
lvc.mask = LVCF_TEXT;
lvc.pszText = "This is a test CORUMN!";
}
このようになる。
ここで
void InitCorumn()
{
LV_ITEM lvc;
lvc.mask = LVCF_TEXT;
lvc.pszText = "This is a test CORUMN!";
lvc.cx = 200;
}
としても、cx 属性は無視される。
マスクに追加していないからである。
今回はここまでにして次回はアイテムの挿入を実装したいと思う。 |