ツリービューでのアイコン表示

[戻る]
みか 2002/06/23(日) 08:42:20
初めて投稿いたします。

エクスプローラ風に左側にツリーをつくり
右側にそれに対応したファイルなどを表示したいのですが

ツリーアイテムが選択されているときと
選択されていない時でアイコン表示を変えるには

CImageList m_pImageList;
CTreeCtrl       m_TreeCtrl;
m_pImageList.Create(16, 16, ILC_COLORDDB, 2, 2);
m_pImageList.SetBkColor(bkColorTable[num]);
m_TreeCtrl.SetImageList(&m_pImageList, TVSIL_NORMAL);
m_TreeCtrl.InsertItem (TEXT("aaa"),0,1);

と言うように
SetImageList()でTVSIL_STATEというアイテムを使うと
"aaa"というアイテムが選択されていない時には
インデックス0のビットマップなどがロードされ
選択状態になるとインデックス1のビットマップなどがロードされると思います。

ツリーを選択非選択でアイコンのイメージを変えるのではなく
右側にあるファイルが読取専用なら
ツリーのアイコンを0にして読取専用でなければ1にするとか
する場合にはどうすればいいのでしょうか?

ヘルプを見たところ
m_TreeCtrl.SetImageList(&m_pImageList, TVSIL_NORMAL);
のところで
TVSIL_NORMALではなく
ユーザー定義のTVSIL_STATEを使えばいいと思うのですが
その後の
m_TreeCtrl.InsertItem (TEXT("aaa"),0,1);
としてしまうとツリーのアイコンが表示されなくなってしまいます。

ユーザー定義のTVSIL_STATEを使えばいいと思うのですが
その後の設定の仕方がよくわかりません。
どなたかよろしくお願いします。

不良PG [E-Mail] 2002/06/24(月) 10:37:42
読取専用かどうかどうかをチェックして
CTreeCtrl::SetItemImage
でイメージを変更すれば良いのでは?

あとコールバックアイテムを使う手もあるかな・・


チェック方法は、ファイルをタイマで監視するか
スレッド作って::FindFirstChangeNotificationなどで監視しすれば良さそう

みか [E-Mail] 2002/06/26(水) 00:10:39
[[解決]]
コメントありがとうございます。
結局両方とも同じ値にして
解決しました。
頭が固いとそういうことも思い浮かなくて
申し訳ありませんでした。

ありがとうございます。

不良PG [E-Mail] 2002/06/26(水) 12:02:13
マルチポス・・
http://n76cd-01p05.ppp11.odn.ad.jp/log/05610.html
http://mfc.acty-net.ne.jp/ml/mfc/msgView.cgi?Lno=40699

古いスレッドには追加発言できません。