初めて投稿いたします。
エクスプローラ風に左側にツリーをつくり
右側にそれに対応したファイルなどを表示したいのですが
ツリーアイテムが選択されているときと
選択されていない時でアイコン表示を変えるには
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を使えばいいと思うのですが
その後の設定の仕方がよくわかりません。
どなたかよろしくお願いします。
読取専用かどうかどうかをチェックして
CTreeCtrl::SetItemImage
でイメージを変更すれば良いのでは?
あとコールバックアイテムを使う手もあるかな・・
チェック方法は、ファイルをタイマで監視するか
スレッド作って::FindFirstChangeNotificationなどで監視しすれば良さそう
コメントありがとうございます。
結局両方とも同じ値にして
解決しました。
頭が固いとそういうことも思い浮かなくて
申し訳ありませんでした。
ありがとうございます。