システムイメージリストを複製できない – プログラミング – Home

システムイメージリストを複製できない
 
通知
すべてクリア

[解決済] システムイメージリストを複製できない


Q
 Q
(@Q)
ゲスト
結合: 24年前
投稿: 45
Topic starter  

いつもお世話になってます。

現在、ファイルの一覧を大きいアイコンで表示するアプリケーションを作っています。

一部の画像ファイルをサムネイル表示したいので、システムイメージリストを複製し、
システムイメージリストのコピーに新たにアイコンを追加(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
です。

よろしくお願い致します。


引用未解決
トピックタグ
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

システムイメージリストって動的に追加されていくので、
複製したあとに追加されたイメージは、複製先には反映
されないんではないかな、と思います。


返信引用
Q
 Q
(@Q)
ゲスト
結合: 24年前
投稿: 45
Topic starter  

回答ありがとうございます。

なるほどです。。
システムイメージリストはオリジナルのまま使うのがよさそうですね。。

とりあえずシステムイメージリストの方は解決とさせていただき、
サムネイル表示の方法については別問題ですので、新しくスレッドを立てさせて頂こう
と思います。(質問タイトルも相応しくないので。。)

有難うございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました