ツリービューにエクスプローラーで使われているような
フォルダが閉じているときのアイコン、
フォルダを開いたときのアイコンを取得したいのですけど
どのような関数を使えば、この2つのアイコンを取得できますか?
分かる方がいらしたら、よろしくお願いします。
それって取得するのではなく、自分で設定するものなのではないのですか、アイコンリ
ソースを切り替えて?
システムが保持しているイメージを利用することができます。
1. システムイメージリストを取得します。
CImageList m_image;
SHFILEINFO sfi;
HIMAGELIST hSystemImageList = (HIMAGELIST)SHGetFileInfo(
_T(C:\\), 0, &sfi,
sizeof(SHFILEINFO),
SHGFI_SYSICONINDEX | SHGFI_ICON);
m_image.Attach(hSystemImageList);
2. フォルダに割り当てられたアイコン(開/閉)のインデックスを取得します。
m_nCloseIndex、m_nOpenIndexにはシステムイメージリストにおけるインデックスが返りま
す。
// フォルダアイコン(クローズ)
SHGetFileInfo(C:\\WINDOWS, 0, &sfi, sizeof(SHFILEINFO),
SHGFI_SYSICONINDEX | SHGFI_ICON);
int m_nCloseIndex = sfi.iIcon;
// フォルダアイコン(オープン)
SHGetFileInfo(C:\\WINDOWS, 0, &sfi, sizeof(SHFILEINFO),
SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_OPENICON);
int m_nOpenIndex = sfi.iIcon;
イメージリストとインデックスが取得できれば、
後は好きなようにできると思います。
サンプルまで書いていただいたおかげでとても助かりました。
教えてもらったとおりにやってみたところ無事解決しました。
ありがとうございました。