いつもお世話になってます。
現在、ファイルの一覧を大きいアイコンで表示するアプリケーションを作っています。
一部の画像ファイルをサムネイル表示したいので、システムイメージリストを複製し、
システムイメージリストのコピーに新たにアイコンを追加(Add)したものをCListViewに
セットして表示させようと考えています。
しかし、WTL::CImageList::Duplicateを使用して複製したイメージリストを使用すると
一部のファイル形式でアイコンが表示されません。(exe, jpg, log等)
新しいイメージリストハンドルが返されることから、システムイメージリストの複製は
行われているようですが、正常に複製できていないようです。
オリジナルのシステムイメージリストだと正常にアイコンが表示されます。
何か情報をお持ちの方、ご教授いただければ幸いです。
ソースはこのような感じです
--------------------------------------------
SHFILEINFO sfi = {0};
CImageList sysImageList
= reinterpret_cast<HIMAGELIST>(
SHGetFileInfo(
フォルダパス,
0,
&sfi,
sizeof(SHFILEINFO),
SHGFI_PIDL | SHGFI_ATTRIBUTES | SHGFI_SYSICONINDEX |
SHGFI_LARGEICON | SHGFI_DISPLAYNAME
)
);
m_ImageList = CImageList::Duplicate(sysImageList); // システムイメージリスト複
製
m_ImageList.Add(m_hBitmap); // ビットマップアイコン追加
m_pListView->SetImageList(m_ImageList, TVSIL_NORMAL);
-----------------------------------------------
環境は
WinXP Home Edition
VC++6.0 ATL/WTL & Win32API
です。
よろしくお願い致します。
システムイメージリストって動的に追加されていくので、
複製したあとに追加されたイメージは、複製先には反映
されないんではないかな、と思います。
回答ありがとうございます。
なるほどです。。
システムイメージリストはオリジナルのまま使うのがよさそうですね。。
とりあえずシステムイメージリストの方は解決とさせていただき、
サムネイル表示の方法については別問題ですので、新しくスレッドを立てさせて頂こう
と思います。(質問タイトルも相応しくないので。。)
有難うございました。