ページ 11

ListView コントロール

Posted: 2006年1月29日(日) 13:44
by M.S.
ListView に Favorite (お気に入り) のフォルダの中にある、
インターネット ショートカットと、フォルダを表示させようとしたのですが、
過去ログを見てもうまくできないので、質問させていただきます。
僕の技量ではこれが限界です・・・。

これをどうすればちゃんとなるのか、教えて下さい。

Re: ListView コントロール

Posted: 2006年1月29日(日) 16:55
by hira
FindFirstFileは1回だけ呼び出し(→doより前)、ループ内ではFindNextFileを呼び出すようにしてはいかがでしょう?
※実験してませんが(^^;

Re: ListView コントロール

Posted: 2006年1月30日(月) 15:32
by ノッチ
いくつか修正して動作するようになりました。

1) doの位置をhFind=FindFirstFile(buffer,Find)の後にする
2) buffer+"\*." が正しく結合されないのでlstrcat(buffer,"\*.")に変更
(ABは久しくさわってないので文字列の結合方法がわかりません)
3) アイテム追加のLVM_SETITEMをLVM_INSERTITEMに変更

FindFirstFileのbufferが"c:\~~~~\Favorites\*"だとフォルダも追加されます。
サブフォルダ以下はそのフォルダから個別に検索して下さい。

Re: ListView コントロール

Posted: 2006年2月01日(水) 18:29
by M.S.
> 1) doの位置をhFind=FindFirstFile(buffer,Find)の後にする
> 2) buffer+"\*." が正しく結合されないのでlstrcat(buffer,"\*.")に変更
> (ABは久しくさわってないので文字列の結合方法がわかりません)
> 3) アイテム追加のLVM_SETITEMをLVM_INSERTITEMに変更

こういうことでしょうか?
上のようにへんこうしましたが、表示されませんでした。

間違っている点がありましたら、ご指摘ください。

Re: ListView コントロール

Posted: 2006年2月02日(木) 11:30
by ノッチ

コード: 全て選択

>     'ParamNumを元に、先頭からのインデックス番号を取得
>     lvFind.flags=LVFI_PARAM
>     lvFind.lParam=ParamNum
>     Find.cFileName=SendDlgItemMessage(hMainWnd,ListView1,LVM_FINDITEM,-1,VarPtr(lvFind))
上記の部分でLVIF_PARAMがLVFI_PARAMになってるのはただの打ち間違いだと思いますが、

コード: 全て選択

Find.cFileName=SendDlgItemMessage(hMainWnd,ListView1,LVM_FINDITEM,-1,VarPtr(lvFind))
の部分がよくわからないので、これをコメントアウトすればとりあえずは
動作するようになるはずです。

Re: ListView コントロール

Posted: 2006年2月02日(木) 11:38
by ノッチ
ところでListViewじゃなくてTreeViewだった、ってオチはないですか?
エクスプローラーのフォルダ表示で左側に表示されるのがTreeViewです。
反対に、右側に表示されるのがListViewです。
どういった用途で使用するのかわかりませんが、フォルダとファイルのような
階層状態を表現するのはTreeViewの方がわかりやすいと思います。

Re: ListView コントロール

Posted: 2006年2月02日(木) 18:07
by M.S.
> ところでListViewじゃなくてTreeViewだった、ってオチはないですか?
> エクスプローラーのフォルダ表示で左側に表示されるのがTreeViewです。
> 反対に、右側に表示されるのがListViewです。

いえ、それはありません。
コントロール ID は、配置したときのままなので・・・。


> どういった用途で使用するのかわかりませんが、フォルダとファイルのような
> 階層状態を表現するのはTreeViewの方がわかりやすいと思います。

そうですか、TreeView でやろうと思ったのですが、
なんか難しそうだし過去のサンプル的なものがなかったので、
ListView でやっています。

TreeView のサンプル コードみたいなものを検索してみます。

Posted: 2006年5月15日(月) 21:48
by M.S.
かなり古いトピックですが…。

今日 ListBox でやってみたら出来たのですが、
ファイル名を表示させることについてと、
Win XP での動作について聞きたいことがあります。
上のコードで ListBox1 にセットすることに成功したのですが、
Win 95 では正常に動作したのに、Win XP では正常に動作しません。
これは、何故おこるのでしょうか?

それから、「do ~ loop while …」内にある、
「wsprintf(buf,"Internet Shortcut")」の「"Internet Shortcut"」を、
検索したファイル名にしたいのですが、どうすればいいのですか?

よろしくお願いします。


P.S.
関係ないですが、
Win 95 の "C:\WINDOWS\System\options\CABS"
の中を見ていたら、IE4 のインストーラがあったので、
IE4 をインストールして AB プログラミングができるようになりました。

Posted: 2006年5月15日(月) 22:29
by 7
> かなり古いトピックですが…。
そうですね...。

> 上のコードで ListBox1 にセットすることに成功したのですが、
> Win 95 では正常に動作したのに、Win XP では正常に動作しません。
> これは、何故おこるのでしょうか?
Win XP しか持ってないので検証できないのですけど、たぶんDeclareが問題になってるんじゃないでしょうか。String型ではなくBytePtr型にするべきです。 > それから、「do ~ loop while …」内にある、
> 「wsprintf(buf,"Internet Shortcut")」の「"Internet Shortcut"」を、
> 検索したファイル名にしたいのですが、どうすればいいのですか?
検索したファイルの情報はWIN32_FIND_DATA構造体に格納されます。ファイル名は cFileName メンバです。

ActiveBasic Ver 4.24.00
Windows XP Home SP2で動きました。

Posted: 2006年5月24日(水) 13:49
by M.S.
返信遅れてしまってすいません。


7 さんのコードで Win95 でも動作できました。
ありがとうございました。


そしてみなさん、ありがとうございました。

Posted: 2006年5月24日(水) 20:53
by C1000
> そうですか、TreeView でやろうと思ったのですが、
> なんか難しそうだし過去のサンプル的なものがなかったので、
> ListView でやっています。
>
> TreeView のサンプル コードみたいなものを検索してみます。
今自分はTreeViewで同じことをやっています。