-PR-
解決済み

ツリーメニューを縮小させたい

  • 困ってます
  • 質問No.96700
  • 閲覧数402
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 83% (88/105)

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

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

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

OnItemexpandingあたりを使うのかな?と思うのですが、
どの記述を移せばいいのか、また引数に何を入れたら良いか、
ヘルプや本を見てもいまいちわかりません。
特にOnItemexpandingを使う必要はないのですが、
縮小させる方法がありましたら教えてください。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル8

ベストアンサー率 44% (11/25)

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);
お礼コメント
akika0215

お礼率 83% (88/105)

申し訳ありません、締め切ったときにお礼を一緒に書き込んだはずなのですが
うまく入らなかったようでした。お礼が遅れてすみませんでした。
大変解かりづらい説明に対し、お答えいただきましてありがとうございました。
なかなかやってみる時間がとれていないのですが、こういう関数があったのを
知らなかったので、大変助かります。
CTreeCtrl::Expand()でなんとかなりそうです。
どうもありがとうございました。
またよろしくお願いします。
投稿日時 - 2001-07-29 22:13:25
-PR-
-PR-
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ