たまにはVC++ |
『リストビューを使いこなす』
2005.Jan.30
|
リストビューとは |
エクセルの表や、フォルダを開いた時に「ファイル名」や「サイズ」のように行と列で構成されるコモンコントロールの1つです。
割と便利なので簡単なデータベースなどでよく使われます。
ですが、意外とネット上ではサンプルが少ないです。
ここでは、ある程度使いこなせる程度のサンプルを作ってみます。
|
リストビューの機能 |
リストビューは規則性のあるアイテムをリスト表示させたい場合に使います。
一番分かりやすい例がエクスプローラです。
ファイルやフォルダのリストを表示した場合、ファイル名やファイルサイズ、日付、ファイルの種類、、、などなど一覧表示してくれるので大変便利です。
また、アイコンの表示やソート、ダブルクリック反応したり右クリックでメニューが出たり、リストビューにはたくさんの機能がついています。
サンプルではエクスプローラと同じくファイルをリスト化して表示します。
仮想リストビュー、アイコン表示、ソート、ツールチップ、ダブルクリックでの関連付け実行。といった機能を実装した簡単なファイラーを作ってみましょう。
|
サンプルの画面 |
ソースコードはちょっと長いので省略します。
サンプルの画面です。
リストビューはリソースではなくコードからCreateWindowExで作成しています。
|
とりあえずサンプルソース |
ソースはここだ!
|
ちょこっと解説 |
さて、ソース中ではうだうだやっていますが、まずカレントパスのファイルを列挙して、必要な情報をメモリに格納します。
仮想リストビューというのは、リストビューコントロールに値を持たせず独自で持つ方法のことです。
ソートの時はクイックソートと呼ばれるアルゴリズムでソートします。
この、仮想リストビューとクイックソートを組み合わせたサンプルはネット上になかった(ような気がする)ので作ってみました。
ちなみに、ソート自体はリストビューの機能に含まれており、コールバックを使用してアイテムの比較を行うこともできます。
こっちの方が簡単です。
しかし、これはたぶんバブルソートという非常に遅いソートをしているので数万件というデータがある場合はソートに時間がかかって、とてもじゃないがやってられません。
こういう場合は仮想リストビューを使って独自でソートしろ・・・なんて言われてる人をBBSの過去ログでよく見ますが、しかしそのサンプルは少ないという、これもまたやり切れません。
まぁ方法さえ分かれば後は自分で何とかしろって事なんですが。
さて、それはともかく、そのソートを行った場合ソートマーク(▽と△)をカラムに表示させます。
これもまたサンプルがなぜか少ない。
ここではイメージリストを使い表示させています。
あとはダブルクリックすると開く動作をしたりなど、基本的な動作を組み込んでいます。
|
他にも |
リストビューには他にも色々な機能があります。
使いどころを見極めて使いこなしてください。
|
終わり |
今回のサンプルはリストビューの使い方ということで、あまりファイラーとしての機能は満たしていません。
ファイラーを作る気ならエクスプローラを作るというページが役に立つと思います。
|