Last Updated 2011/06/28
Programming Tips Visual C++ MFC CListView(CListCtrl)  索 引 
イメージリストを破棄しない
2003/02/10

以下の様なプログラムで CImageList を CListView にアタッチすると,プログラム終了後に Windows のアイコンがすべて消えてしまう.

    CImageList* img = new CImageList();
    hImageList = (HIMAGELIST)::SHGetFileInfo(ファイル名, 0, &sfi,sizeof(sfi),
                       SHGFI_ICON | SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
    img->Attach(hImageList);
    m_Lview.SetImageList(img, LVSIL_SMALL);
    img->Detach();
    delete img;

これはリストビューが破棄されるときにアタッチしたイメージリストまで破棄するからである.

ダイアログのリストコントロールであれば,プロパティの「共有イメージリスト」にチェックを入れればよい.

動的に生成するリストビューであれば,LVS_SHAREIMAGELISTS をスタイルに設定すればイメージリストは破棄されない.


参照
状態イメージの表示
前後のTips
イメージリストを破棄しない

DSS ProgrammingTipsCGI Ver2.02