DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ツリービューでエクスプローラの作成

環境/言語:[WinXP, VB.NET2003]
分類:[.NET]

はじめまして。
現在ツリービューを使って、エクスプローラのようなものを作成しております。
エクスプローラのようにデスクトップをルートとする
ツリービューを作成するには、アイテムIDリストを利用すればいいということで、
サンプルを探したところ、VB6.0でのサンプルを次のサイトより
見つけることが出来ました。
http://www.mvps.org/btmtz/

このサンプルをVB.NETに自力で移植しているところなのですが、
このサンプルではTreeViewをサブクラス化し、
objTV.Nodes(1).Expanded = True が実行されたときに送られてくるメッセージから
NMTREEVIEW構造体に値を格納し、この中のcodeの値が
TVN_ITEMEXPANDINGかを判定して子ノードの挿入を行っているのですが、
VB.NETでうまくいきません。
(.NETではTreeViewクラスのWndProcをオーバーライドしました)

objTV.Nodes(0).Expand() で同じようにメッセージが送られてくると思ったのですが、
TVN_ITEMEXPANDINGではない値が送られてきます。
右クリック時のNM_RCLICKは正常に取得できることから、
lParam⇒NMTREEVIEWへの変換はうまくいっていると思うのですが。
objTV.Nodes(0).Expand()がいけないのか、
TVN_ITEMEXPANDINGではない違う値で判定しなくてはいけないのか、
それ以外の問題なのか。

VB.NETまたはC#でのサンプルなど御座いましたら
教えて頂けないでしょうか。

長文失礼致しました。
■No6225に返信(rakiさんの記事)
>
> VB.NETまたはC#でのサンプルなど御座いましたら
> 教えて頂けないでしょうか。
>

rakiさん、こんにちは。

宇宙仮面さんのサイトなど、探せばいろいろ見つかると思います。
頑張ってください。

http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=treeview+%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80&lr=
■No6226に返信(ぱるさんの記事)

ぱるさんありがとうございます。

> 宇宙仮面さんのサイトなど、探せばいろいろ見つかると思います。
> 頑張ってください。

宇宙仮面さんのサイトを見てまいりました。
サイトは知っていたのですが、じっくり見たのは初めてでした。
ただ、ここに載っていた方法は、論理ドライブ以下のフォルダツリーで、
方法も論理ドライブを取得⇒配下のパスを取得・・・
とパスで行っておりました。

私が行いたいのはデスクトップをルートとするフォルダツリーで、
アイテムIDリストを使用して表示を行う方法です。
現在、デスクトップの表示は行えているのですが、
そのノードが開かれたときに下位のフォルダを取得⇒表示を行いたく、
WndProcをオーバーライドし、メッセージを取得して処理を行っています。
が、VB.NETでのノード展開(objTV.Nodes(0).Expand())を実行したときに
送られてくるメッセージが分かりません。
正確に言えば、m.LParamに格納されてくる
NMTREEVIEW構造体の中の『code』の値が知りたいのです。

もしかしたら、アイテムIDリストを使わなくても、
.NETならではの方法でいけるのかもしれませんが、
それも見つかりませんでした。

せっかく教えていただいたのですが、
解決に至ることはできませんでした。
ご好意を無駄にしてしまったようで申し訳ありません。

しかし、貴方のレスで元気がでました。
もう少し頑張ってみます。
ありがとうございました。

DOBON.NET | プログラミング道 | プログラミング掲示板