たまにはVC++

『リストビューを使いこなす』
2005.Jan.30

リストビューとは

エクセルの表や、フォルダを開いた時に「ファイル名」や「サイズ」のように行と列で構成されるコモンコントロールの1つです。
割と便利なので簡単なデータベースなどでよく使われます。
ですが、意外とネット上ではサンプルが少ないです。
ここでは、ある程度使いこなせる程度のサンプルを作ってみます。
リストビューの機能

リストビューは規則性のあるアイテムをリスト表示させたい場合に使います。
一番分かりやすい例がエクスプローラです。
ファイルやフォルダのリストを表示した場合、ファイル名やファイルサイズ、日付、ファイルの種類、、、などなど一覧表示してくれるので大変便利です。
また、アイコンの表示やソート、ダブルクリック反応したり右クリックでメニューが出たり、リストビューにはたくさんの機能がついています。

サンプルではエクスプローラと同じくファイルをリスト化して表示します。
仮想リストビュー、アイコン表示、ソート、ツールチップ、ダブルクリックでの関連付け実行。といった機能を実装した簡単なファイラーを作ってみましょう。
サンプルの画面

ソースコードはちょっと長いので省略します。
サンプルの画面です。


リストビューはリソースではなくコードからCreateWindowExで作成しています。
とりあえずサンプルソース

ソースはここだ!
ちょこっと解説

さて、ソース中ではうだうだやっていますが、まずカレントパスのファイルを列挙して、必要な情報をメモリに格納します。
仮想リストビューというのは、リストビューコントロールに値を持たせず独自で持つ方法のことです。
ソートの時はクイックソートと呼ばれるアルゴリズムでソートします。
この、仮想リストビューとクイックソートを組み合わせたサンプルはネット上になかった(ような気がする)ので作ってみました。
ちなみに、ソート自体はリストビューの機能に含まれており、コールバックを使用してアイテムの比較を行うこともできます。
こっちの方が簡単です。
しかし、これはたぶんバブルソートという非常に遅いソートをしているので数万件というデータがある場合はソートに時間がかかって、とてもじゃないがやってられません。
こういう場合は仮想リストビューを使って独自でソートしろ・・・なんて言われてる人をBBSの過去ログでよく見ますが、しかしそのサンプルは少ないという、これもまたやり切れません。
まぁ方法さえ分かれば後は自分で何とかしろって事なんですが。

さて、それはともかく、そのソートを行った場合ソートマーク(▽と△)をカラムに表示させます。
これもまたサンプルがなぜか少ない。
ここではイメージリストを使い表示させています。

あとはダブルクリックすると開く動作をしたりなど、基本的な動作を組み込んでいます。
他にも

リストビューには他にも色々な機能があります。
使いどころを見極めて使いこなしてください。
終わり

今回のサンプルはリストビューの使い方ということで、あまりファイラーとしての機能は満たしていません。
ファイラーを作る気ならエクスプローラを作るというページが役に立つと思います。



[先頭ページへ] [次のページへ]

リンクフリー  Copyright (C) K_Yaguchi