ツリーコントロールにアイテムが表示されない。

[戻る]
EIGHT 2005/05/15(日) 20:46:08
はじめて質問させて頂きます。
VC++6でダイアログベース(MFC)のプロジェクトにツリーコントロールを貼り付けています。
OnInitiDialog()に下記コードを書いて、テキストの前にアイコンを表示しようとしてますが、
テキストは表示されるのですが、アイコンが表示されません。
(テキストの前にはアイコンのスペースらしき空白は表示されてます。)
以前、似たような質問があったようなので、いろいろ改良してみましたが
上手くいかないので質問させて頂きました。
よろしくお願いいたします。
-------------------------------------------------------------------
         CTreeCtrl m_tree;

OnInitiDialog(
    CImageList m_ImageList;
    m_ImageList.Create(16, 16, ILC_MASK, 3, 2);

    //イメージリストにアイコンをセット
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
         //ツリーコントロールにイメージリストをセット
    m_tree.SetImageList(&m_ImageList,LVSIL_NORMAL);

     //ツリーコントロールにアイテムを挿入
    TV_INSERTSTRUCT treeitem;
    treeitem.hParent=NULL;
    treeitem.item.mask=TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
    treeitem.item.pszText="テスト1";
    treeitem.item.iImage = 0;
    treeitem.item.iSelectedImage = 1;
    m_tree.InsertItem(&treeitem);
)

dairygoods 2005/05/16(月) 09:01:55
> OnInitiDialog(
>     CImageList m_ImageList;

このように関数内に定義したオブジェクトは、
その関数を抜ければ破棄されてしまいます。
したがって、ツリーがアイコンを表示しようと思ったときには、
もうそのイメージリストは存在していないことになります。

EIGHT 2005/05/16(月) 23:19:13
dairygoodsさん、返信ありがとうございました。
すごく初歩的なミスをしてしまってたんですね。
教えていただいた通りにすると解決しました。
本当にありがとうございました。

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