[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/12/14(Wed) 15:42
投稿者名:ひろんた
Eメール:
URL :
タイトル:
ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
こんにちは

ListViewにファイルや日付等を表示するプログラムを作成しています。
ファイル名の左にエクスプローラの詳細表示のように関連づけらたアイコンを表示したく
検索していました。サンプルソースなんてすぐに見つかるだろうと思って色々検索していたのですが
結局3日間見つからない状態です。
そこで質問しています。

Set List = ListView1.ListItems.Add
With List
       .Text = s
       .SubItems(1) = ByteConv(WFD(t).nFileSizeLow) ’サイズ
       .SubItems(2) = UCase$(GetExt(s))       ’拡張子
       .SubItems(3) = TimeConv(WFD(t).ftLastWriteTime)’日付
    ’アイコンの取り出し
    hIcon = ExtractAssociatedIcon(App.hInstance, _
                                          Dir1.path & "\" & s & vbNul
lChar, _
                                          0)

    DrawIcon PicIcon.hdc, 0, 0, hIcon
    ImlIcons.ListImages.Add Key:=sExt, Picture:=PicIcon.Image

    .SmallIcon = XXXX

XXXXにImageList1に登録した番号をいれればアイコン表示するのですが
上記のように関連づけられたアイコンを取り出してもアイコンが表示できません。

御教授お願いします。

Windows XP VB6 です。

投稿時間:2005/12/14(Wed) 16:19
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
関連付けられたアイコンが取得できているのですか(大・小)
取得できているが、ImageList1 ImageList2 からの表示ができないのですか?
大きいアイコンは表示できるが、小さいアイコンが表示できないのか?
小さいアイコンはどのようにして取得していますか?

今一質問が理解できません。
(中途半端な注釈もないコードは私には理解できません。m(__)m)

投稿時間:2005/12/14(Wed) 16:48
投稿者名:ひろんた
Eメール:
URL :
タイトル:
Re^2: ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
早速の御教授ありがとうございます。
質問に答えます。

> 関連付けられたアイコンが取得できているのですか(大・小)
hIcon = ExtractAssociatedIcon(App.hInstance, _
                                          Dir1.path & "\" & s & vbNullC
har, _
                                          0)
で取得したアイコンです。大、小かはわかりません。
二つ取得できるのですね?


> 取得できているが、ImageList1 ImageList2 からの表示ができないのですか?
取得したアイコンをImageList1に追加するのが
DrawIcon ImageList1.hdc, 0, 0, hIcon
です。

> 大きいアイコンは表示できるが、小さいアイコンが表示できないのか?
大きいアイコンはいりません。
小さいアイコンはPicture1にだせているので取得できてると思います。

> 小さいアイコンはどのようにして取得していますか?
hIcon = ExtractAssociatedIcon(App.hInstance, _
                                          path & "\" & ファイル名 & vbN
ullChar, _
                                          0)
です。

> 今一質問が理解できません。
> (中途半端な注釈もないコードは私には理解できません。m(__)m)

すいません私もListViewに関連付けされた小さいアイコンを表示したく
色々コードをコピペして書いていますがなぜアイコンが取得できたのかさえ
解かっていません。

よろしければその辺も含め御教授願いただければ幸いです。

投稿時間:2005/12/14(Wed) 17:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
> で取得したアイコンです。大、小かはわかりません。
> 二つ取得できるのですね?
大きいアイコン(32×32)しか取得できません。

> > 取得できているが、ImageList1 ImageList2 からの表示ができないのですか?
> 取得したアイコンをImageList1に追加するのが
> DrawIcon ImageList1.hdc, 0, 0, hIcon
> です。
どこに書いてあったのですか? そのコードは


> すいません私もListViewに関連付けされた小さいアイコンを表示したく
> 色々コードをコピペして書いていますがなぜアイコンが取得できたのかさえ
> 解かっていません。
View プロパティ をヘルプで見るとそこに使用例が書いてありますので
それらを一度試されたらどうでしょうか?

投稿時間:2005/12/14(Wed) 17:21
投稿者名:ひろんた
Eメール:
URL :
タイトル:
Re^2: ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
すいませんおおきく間違っていました。

DrawIcon PicIcon.hdc, 0, 0, hIcon
はピクチャーBOXにアイコンを表示する命令でした
のでイメージリストに追加しそれをListViewに表示する方法がわかりません。

なんかしどろもどろになって自分も混乱していますが
回答される方も混乱しますよね
申し訳ありませんでした。

以上よろしくお願いします。

投稿時間:2005/12/14(Wed) 17:48
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
下記にサンプルがありますので参考にして下さい。
hhttp://www.canalvisualbasic.net/recursos/vermensaje.asp?idMensaje=136

投稿時間:2005/12/14(Wed) 18:18
投稿者名:ひろんた
Eメール:
URL :
タイトル:
Re^4: ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
花ちゃんさん

> 下記にサンプルがありますので参考にして下さい。
> hhttp://www.canalvisualbasic.net/recursos/vermensaje.asp?idMensaje=136

サンプル見にいきましたがMensaje、encontrado noってでて真っ白でした。
なにかソフトをインストールしたいと見られないのでしょうか?
推測ですがそのソフトをカード決済で入手するのでしょうか?

ちょっと海外サイトにカード番号いれる勇気はないので
HELPで勉強してみます。

ありがとうございました。

投稿時間:2005/12/14(Wed) 23:12
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
.NET 用は色々作ったのですが、取り合えず、テスト中ですが下記が参考になれば、
未完成ですので後ほど削除します。(ご覧になられたようなので削除します)



投稿時間:2005/12/15(Thu) 00:12
投稿者名:ひろんた
Eメール:
URL :
タイトル:
Re^6: ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
花ちゃんさん

わざわざコードまで御提示いただきましてありがとうございました。
サンプルプログラムでうまくうごきました。
小さいアイコンがでた時は感動しました。

ひとつ気になる点がありましてアイコンがなにか減色しているように
感じるのですが設定でもあるのでしょうか

これからトレースして勉強してみます。

ありがとうございました。

投稿時間:2005/12/15(Thu) 01:28
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: ListViewの詳細表示
> ひとつ気になる点がありましてアイコンがなにか減色しているように
> 感じるのですが設定でもあるのでしょうか

多分、ImageList がサポートしているカラー数が16色とかじゃなかったかと思います。
.NET では、32ビットカラーまでサポートしていますが、VB6.0 では、4ビットカラー
ではないでしょうか?

又、ExtractAssociatedIcon API で取得できるアイコンは、32×32 の1種類だけなので
そのアイコンを16×16 に縮小しているので、エクスプローラのように綺麗なアイコンを
表示できません。

ExtractAssociatedIcon API ではなく、SHGetFileInfo API を使って取得すれば
いいようですね。
こちらも[並べて表示の]64×64(48×48)は取得する方法が解りません。

投稿時間:2005/12/16(Fri) 12:05
投稿者名:ひろんた
Eメール:
URL :
タイトル:
Re^8: ListViewの詳細表示
こんちは

花ちゃんさん
>
> ExtractAssociatedIcon API ではなく、SHGetFileInfo API を使って取得すれば
> いいようですね。

なぜかExtractAssociatedIconではメモリエラーがでてフリーズがしょっちゅうでたので
SHGetFileInfoで小さいアイコンを取得に変更しました。(開放が原因???)
アイコンもきれいになりました。
ありがとうございました。

IMAさん

サンプルのリンクありがとうございました。
ちゃんと作ったつもりなんですが
動作までいってません。
今のソフトが完成したら再度トライしてみます。

Starfishさん

リンクのHP見ました。
サンプル全てDLして確認して見ました。つかえそうなのがいっぱいあって
一番大きいサンプルはまさにエクスプローラそのものですね。
でも今の私にはむずかしすぎます。

みなさんどうも御助言ありがとうございました。
今回のアイコンの表示の事でいい勉強させてもらいました。
感謝です。

投稿時間:2005/12/15(Thu) 05:15
投稿者名:IMA
Eメール:
URL :
タイトル:
Re: ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
こんにちわ。IMAと申します。
そのまま使えそうなサンプルです。
以前にVB6 + Win2000 で試してみましたがうまく表示されました。

参考リンク(トップはhhttp://vbnet.mvps.org/index.html)の
hhttp://vbnet.mvps.org/index.html?code/comctl/lvdemo1.htm
hhttp://vbnet.mvps.org/index.html?code/comctl/lvdemo2.htm
hhttp://vbnet.mvps.org/index.html?code/comctl/lvdemo3.htm
hhttp://vbnet.mvps.org/index.html?code/comctl/lvdemo4.htm
をご参照ください。

投稿時間:2005/12/15(Thu) 06:23
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re: ListViewにエクスプローラの詳細表示のようにアイコンをだしたい
> ListViewにファイルや日付等を表示するプログラムを作成しています。
> ファイル名の左にエクスプローラの詳細表示のように関連づけらたアイコンを表示したく
> 検索していました。サンプルソースなんてすぐに見つかるだろうと思って色々検索していたのです

> 結局3日間見つからない状態です。

 こんなサンプルもあります。

 高度すぎて私には理解不能ですが

hhttp://btmtz.mvps.org/vbexplorer/