はじめて投稿させていただきます。
よろしくお願いします。
作成しているスタイルはSDIでアプリケーションウィザードの最後の項目で
Windowsエクスプローラスタイルを選択して作っています。
左側のTreeViewにフォルダのイメージを表示させようと思い、こちらの掲示板の
過去ログを見させてもらったところ、分かりやすいサンプルが書いてあったのですが、
なぜが、イメージは問題なく取得できたと思うんですが実際実行してみると
イメージが表示されず、表示されるはずのスペースが開いたままになっています。
void CLeftView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
// TODO: GetTreeCtrl() メンバ関数の呼び出しを通して直接そのリスト コ
ントロールに
// アクセスすることによって TreeView をアイテムで固定できます。
CTreeCtrl &tree = GetTreeCtrl();
CImageList m_image;
SHFILEINFO sfi;
HIMAGELIST hSystemImageList = (HIMAGELIST)SHGetFileInfo(
_T(C:\\), 0, &sfi,
sizeof(SHFILEINFO),
SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_SMALLICON );
m_image.Attach(hSystemImageList);
// フォルダアイコン(クローズ)
SHGetFileInfo(C:\\WINDOWS, 0, &sfi, sizeof(SHFILEINFO),
SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_SMALLICON );
int m_nCloseIndex = sfi.iIcon;
// フォルダアイコン(オープン)
SHGetFileInfo(C:\\WINDOWS, 0, &sfi, sizeof(SHFILEINFO),
SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_OPENICON |
SHGFI_SMALLICON );
int m_nOpenIndex = sfi.iIcon;
tree.SetImageList( &m_image, TVSIL_NORMAL);
HTREEITEM root = tree.InsertItem(TEST, m_nCloseIndex, m_nOpenIndex);
}
このようにした所、うまくいきません。
VC++でのプログライングは始めたばかりなので、サンプルを参考にいろいろやっていま
す。
原因がよく分からないのでよろしくお願いします。
イメージリストのオブジェクトがローカル変数なので、
関数から抜けた時に消えてしまうからです。
>CImageList m_image;
ここで作る代わりに
class CLeftView : public C*TreeView
{
:
CImageList m_image; //ここで
:
};
不良PGさんありがとうございます。
その通りでした。
すいません、こんな簡単なことに気づかなくて。
