MFCのエクスプローラスタイルでスケルトンを生成し、エクスプローラのように
パソコン内のディレクトリやファイルを閲覧するものを作っています。

左のペインのツリー表示から始め、なんとか全ディレクトリ(仮想フォルダは除く)を表示したのですが、
すべての処理をOnInitialUpdate()内に書いてしまったので、
実行すると最初から、すべて展開した状態になってしまいます。

実際は、マイコンピュ-タと、その下のドライブくらいまで表示して、
あとはプラスマークをクリック or ダブルクリックにより展開させたいのです。

OnItemexpandingあたりを使うのかな?と思うのですが、
どの記述を移せばいいのか、また引数に何を入れたら良いか、
ヘルプや本を見てもいまいちわかりません。
特にOnItemexpandingを使う必要はないのですが、
縮小させる方法がありましたら教えてください。

A 回答 (1件)

CTreeCtrlのInsertItem()を使ってれば普通に閉じた状態でアイテムが追加されるはずですけどね(^_^;


OnItemexpanding()はユーザあるいはプログラムがツリーアイテムの展開/縮小を行った時に呼ばれるハンドラなので関係ありません。

プログラム側でツリーアイテムの展開/縮小を行うにはCTreeCtrl::Expand()を使います。
(CTreeCtrl::Expand()の詳細はURLを参照してください)
第一引数は操作するツリーアイテムのハンドル
第二引数は操作内容
 閉じる場合:TVE_COLLAPSE
 開く場合:TVE_EXPAND
なので、アイテムを閉じたい場合には
Expand(ツリーアイテムのハンドル, TVE_COLLAPSE);
とします。

以下に簡単な例を。

HTREEITEM hTree;
CTreeCtrl& tree = GetTreeCtrl();

hTree = tree.InsertItem("ルート", TVI_ROOT, TVI_LAST );
tree.InsertItem("子アイテム", hTree, TVI_LAST );
tree.Expand(hTree, TVE_COLLAPSE);

参考URL:http://www.microsoft.com/JAPAN/developer/library …
    • good
    • 0
この回答へのお礼

申し訳ありません、締め切ったときにお礼を一緒に書き込んだはずなのですが
うまく入らなかったようでした。お礼が遅れてすみませんでした。
大変解かりづらい説明に対し、お答えいただきましてありがとうございました。
なかなかやってみる時間がとれていないのですが、こういう関数があったのを
知らなかったので、大変助かります。
CTreeCtrl::Expand()でなんとかなりそうです。
どうもありがとうございました。
またよろしくお願いします。

お礼日時:2001/07/29 22:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング