| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Как получить иконку файла |
| Автор: Riddik 20.9.2009, 21:31 |
| Сорри, все уладил. Заголовок темы переименовать не могу. помогите с такой проблемой: В ListView выводятся имена файлов. Как получить иконку файла и отобразить её в ListView? |
| Автор: SenkraD 20.9.2009, 23:16 |
| Вообщем SHGetFileInfo и CUSTOMDRAW тебе в руки, но можеш посмотреть http://www.experts-exchange.com/Programming/Languages/CPP/Q_10093381.html и http://www.eggheadcafe.com/software/aspnet/34346018/using-shgetfileinfo-cause.aspx |
| Автор: Riddik 20.9.2009, 23:41 |
| Благодарю! |
| Автор: Andrey44 21.9.2009, 07:05 |
Ну я бы сделал немного по другому. Вместо CUSTOMDRAW - ListView_SetImageList вместо SHGetFileInfo - SHGetImageList Так можно получить иконку любого размера и с нормальным видом. Если хочешь могу у себя поискать то что я когда-то писал. |
| Автор: Riddik 21.9.2009, 08:19 |
| Andrey44, файлов буде несколько десятков в ListView, даже сотен. Большая часть иконок повторяется. Ничего страшного, что столько одинаковых иконок будут грузиться в ImageList? |
| Автор: Andrey44 21.9.2009, 08:48 | ||
Они грузиться не будут |
| Автор: Riddik 21.9.2009, 10:16 | ||
| Ну тогда отлично. По функции HRESULT SHGetImageList( int iImageList, REFIID riid, void **ppv ); Судя по параметрам, из структуры WIN32_FIND_DATA ничего сюда ни пришить? Можно пример? В MSDN не нашёл. Вот есть у меня
Как мне во время заполнения ListView инфой по файлам из WIN32_FIND_DATA добывать нужную иконку? |
| Автор: Andrey44 21.9.2009, 10:52 | ||
Как-то так, посмотри должно работать. |
| Автор: Riddik 21.9.2009, 11:16 |
| IImageList не опознан. comctl32.dll подключена... И утечек памяти никаких не будет после HGetImageList(SHIL_SMALL, IID_IImageList, (void**)&imList); imList на что-то указывает, у меня все это дело в цикле будет. |
| Автор: Andrey44 21.9.2009, 11:18 | ||
|
| Автор: Riddik 21.9.2009, 11:36 |
| Cannot open include file: 'CommonControls.h': No such file or directory Где же он лежит? |
| Автор: Andrey44 21.9.2009, 11:50 |
Как где? У тебя студия какая? |
| Автор: Riddik 21.9.2009, 13:24 |
| Делаю проекты в 6.0, потом релиз собираю в 9-й. Т.к. последняя меня уже достала своими тормозами и многочасовой компиляцией. Сейчас попробовал сбрать в новой - теперь вся подключается все работает - большое спасибо за помощь!!! |