Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/88: Рейтинг темы: голосов - 88, средняя оценка - 4.76
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
1

Как загрузить в ListView системные иконки?

20.06.2009, 10:09. Показов 15870. Ответов 79
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здраствуите!!
нужна маленькая помощь.
Хочу в ListView прибавить к моему списку системные иконки ,ну что бы отображал что это папка или файл .
Есть ли такая функция и как ее прибавить ?
Весь код показывать своего менеджера файлового не буду ,только по работе с ListView
Лист и все остольные кнопки и окна делались не CreateWindow а конструктором VC2008

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
void FindFile(HWND hList,HWND hStaticTmp){//Сюда передается откуда считываеться путьи в какои лист передовать список 
 
    SendMessage(hList, LVM_DELETEALLITEMS, (WPARAM)0,(LPARAM)0);  
    i=-1;
    wchar_t buf [MAX_PATH]={0};
    wchar_t bufLB [MAX_PATH]={0};
    wchar_t buf1[]=L"*\0";
 
    GetWindowText(hStaticTmp,buf,MAX_PATH);
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
 
 
    wcscat(buf,buf1);
    hFind = FindFirstFileW(buf, &FindFileData);
 
    if (hFind == INVALID_HANDLE_VALUE){
        MessageBox(0,L"Ошибка", L"Ненаиден",  MB_OK |MB_ICONWARNING);
    } 
    else 
    {
        do {
            Viev_List(FindFileData.cFileName,hList,i);//заполняет список листа
 
            ++i;
        } while (FindNextFile(hFind, &FindFileData) != 0);
 
        FindClose(hFind); 
 
        InitListViewImageLists(hList);//загрузка иконок
    }
 
}
void Viev_List( wchar_t buf[],HWND hList,int i){//заполняет список листа
    lvItem.mask = LVIF_TEXT|LVIF_IMAGE| LVIF_PARAM ;
    lvItem.state = 0;
    lvItem.stateMask = 0;
    lvItem.iItem = i;
    lvItem.iImage=0;
    lvItem.iSubItem = 0;
    lvItem.pszText =buf;    
    lvItem.cchTextMax = wcslen (buf);
    ListView_InsertItem(hList, &lvItem);
    //InitListViewImageLists(hList);
}
}
BOOL InitListViewImageLists(HWND hWndListView) //загрузка иконок
{ 
    HICON hiconItem;     // icon for list-view items 
    HIMAGELIST hLarge;   // image list for icon view 
    HIMAGELIST hSmall;   // image list for other views 
 
    // Create the full-sized icon image lists. 
    hLarge = ImageList_Create(GetSystemMetrics(SM_CXICON), 
        GetSystemMetrics(SM_CYICON), 
        ILC_MASK, 1, 1); 
 
    hSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON), 
        GetSystemMetrics(SM_CYSMICON), 
        ILC_MASK, 1, 1); 
 
    // Add an icon to each image list.  
    hiconItem = LoadIcon(g_hinst,MAKEINTRESOURCE(IDI_WINLOGO)); 
    ImageList_AddIcon(hLarge, hiconItem); 
    ImageList_AddIcon(hSmall, hiconItem); 
    DestroyIcon(hiconItem); 
    //тут не понятен мне цыкл откуда бурется C_ICONS.
    /************************************************************************
    Usually you have multiple icons; therefore, the previous four lines of 
    code can be inside a loop. The following code shows such a loop. The 
    icons are defined in the application's header file as resources, which 
    are numbered consecutively starting with IDS_FIRSTICON. The number of 
    icons is defined in the header file as C_ICONS.
 
    for(index = 0; index < C_ICONS; index++)
    {
    hIconItem = LoadIcon (g_hinst, MAKEINTRESOURCE(IDS_FIRSTICON + index));
    ImageList_AddIcon(hSmall, hIconItem);
    ImageList_AddIcon(hLarge, hIconItem);
    Destroy(hIconItem);
    }
    ************************************************************************/
 
 
 
 
    //Assign the image lists to the list-view control. 
    ListView_SetImageList(hWndListView, hLarge, LVSIL_NORMAL); 
    ListView_SetImageList(hWndListView, hSmall, LVSIL_SMALL); 
 
    return TRUE; 
}
Зарание спосибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2009, 10:09
Ответы с готовыми решениями:

ListView и иконки у некоторых строк
Есть ListView, создал список иконок. Для всех строк списка получилось вывести иконки, а мне нужно...

Как сделать 2 иконки в ListView?
Доброго времени суток уважаемые форумчане. У меня есть расширенный контрол AeroListView в виде...

Как добавить иконки в ListView
Нужно добыть иконки процессов, запущеных Шындоус и поместить их в Listview. Делаю так: procedure...

TreeView и системные иконки
Компилировал на win7 отображались системные иконки дисков, сейчас на хр скомпилировал - пусто. В...

79
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
19.02.2014, 00:29  [ТС] 61
Author24 — интернет-сервис помощи студентам
это я нашел , описали типа у меня по старому а по новому отдельно создаешь char и потом присваеваешь auto знаешь зачем это ???
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
19.02.2014, 00:29 62
что такое атрибут А у файла?
0
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
19.02.2014, 00:29  [ТС] 63
алилуя, ну как тебе ????
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
19.02.2014, 00:30 64
Цитата Сообщение от Casper! Посмотреть сообщение
это я нашел , описали типа у меня по старому а по новому отдельно создаешь char и потом присваеваешь auto знаешь зачем это ???
зачем auto без понятия
0
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
19.02.2014, 00:31  [ТС] 65
надо читать в мсдне атрибуты я уже не помню
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
19.02.2014, 00:33 66
Цитата Сообщение от Casper! Посмотреть сообщение
надо читать в мсдне атрибуты я уже не помню
А это архивный, я немного затупил)
0
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
19.02.2014, 00:40  [ТС] 67
Ключевое слово auto

Судьбу этого ключевого слово можно сравнить с goto: с одной стороны - в языке есть, с другой - его не используют. Но в случае с auto всё проще. Хотя его и можно использовать для объявления локальных переменных, но смысла в этом нет, так как все локальные переменные по умолчанию считаются автоматическими. Поэтому на практике это ключевое слово не используется. Есть мнение что ключевое слово auto включили в язык С для совместимости с языком B ну а потом оно перекочевало и в С++
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
19.02.2014, 00:41 68
Casper!, В самом низу Вашей программы есть, скажем пункт, в котором должна описываться информация о дисках, но там пусто.
Это так и должно быть? И еще кнопка "Файл" -> "Выход" не работает, а еще нельзя изменить аттрибуты папкам. Это тоже так должно быть или это баг?

Добавлено через 42 секунды
Цитата Сообщение от Casper! Посмотреть сообщение
для совместимости с языком B
первый раз слышу про такой язык
0
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
19.02.2014, 00:42  [ТС] 69
ну впринципе я понял что за ошубку у тебя выбевало , вернее почему .
Как тебе ФМ?
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
19.02.2014, 00:44 70
Цитата Сообщение от Casper! Посмотреть сообщение
Как тебе ФМ
Класс!
Цитата Сообщение от Casper! Посмотреть сообщение
ну впринципе я понял что за ошубку у тебя выбевало , вернее почему .
это Вы про пустоту вместо информации про диск?
0
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
19.02.2014, 00:45  [ТС] 71
о дисках я код не вставил , он отдельно где то лежит , выход помоиму не реализован .

http://ru.wikipedia.org/wiki/%... 0%B8%D1%8F)
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
19.02.2014, 00:45 72
кстати я заметил что размер некоторых папок ФМ показывает 0 хотя там далеко не 0
0
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
19.02.2014, 00:47  [ТС] 73
нет про auto я понял почему выбивало, но это лишь догадки

Добавлено через 1 минуту
там прикол немножко геморны надо писать код на то чтобы он прочесал еще папки ,папки в папках во , как то так , ты сравни 2 версии что я скидывал , может в какои-то и работает
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
19.02.2014, 00:47 74
Цитата Сообщение от Casper! Посмотреть сообщение
нет про auto я понял почему выбивало, но это лишь догадки
а как поступить с дисками? почему вместо инфы про них пусто?
0
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
19.02.2014, 00:49  [ТС] 75
все я спать , всем пока

Добавлено через 31 секунду
можешь дописать с дисками ,там легко .
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
19.02.2014, 00:52 76
Цитата Сообщение от Casper! Посмотреть сообщение
все я спать , всем пока
спок) я тож пошёл)

Добавлено через 2 минуты
Casper!, между Manager Final 1 и Manager Final разницы не заметил, по крайней мере внешней, в код не смотрел, обе не показывают инфу про диск, обе могут изменять атрибуты папок и обе некоторым папкам показывают размер 0 вместо совсем не 0
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
20.02.2014, 23:13 77
Casper!, вобщем я посмотрел Ваш код, поклацал кнопочки в программе и кое-что не понял.
Довольно много файлов и папок отображаются в Вашем ФМ с недоступными для редактирования атрибутами, а также не перемещаются, не копируются, не переименовываются, и не удаляются, причём атрибуты с остальным никак не связаны. Например у папки можна изменить атрибуты, но нельзя скопировать или наоборот.
Также у большинства файлов и папок размер показан нулевым.

Добавлено через 3 минуты
Иногда ФМ копирует папку рядом, а иногда внутрь.
Например в корне диска С есть папка "йцу", он может при нажатии копировать скопировать папку и назвать папку "йцу - копия" и положить её туда же в корень, а может папку "йцу" скопировать в саму папку "йцу".

Добавлено через 6 минут
Не везёт что-то мне на студии
В срр файле есть кусочек вида (без фигурных скобок)
C
1
2
3
4
if (//условие)
//чтото делается
else if (//условие)
//чтото делается
и код компилируется нормально, если я добавлю скобочки
C
1
2
3
4
5
6
7
8
9
10
11
if (//условие)
{
//чтото делается
}
else
{
if (//условие)
{
//чтото делается
}
}
то студия выдаёт ошибку что для else должен быть парный if
Кароч бред!
И это я поставил 2008 про.
0
Brainsbreaker
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
21.02.2014, 03:03 78
Логическая триада
C++
1
2
3
if (){}
else if (){}
else{}
и никакого бреда.
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
21.02.2014, 11:42 79
Цитата Сообщение от Digit@ll Посмотреть сообщение
Логическая триада
без последнего ифа оно будет работать?
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
02.05.2014, 16:57 80
Casper!, ну вобщем я переделал Ваш код как мне нужно было, осталась только одна проблемка: при подключении флешки, список дисков в комбобоксе не обновляется, как это исправить? Проект прилагается)
Вложения
Тип файла: 7z Manager Final.7z (92.3 Кб, 28 просмотров)
0
02.05.2014, 16:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2014, 16:57
Помогаю со студенческими работами здесь

Как создать и загрузить несколько размеров одной и той же иконки приложения?
Здравствуйте:) Как я понял, для корректного отображения иконки при всех размерах значков,...

Системные иконки на своих кнопках
Всем привет! В своей программе я отключаю отображение заголовка окна и системных кнопок (закрыть,...

Как при загрузке иконки из файла ресурсов указать какой именно размер надо загрузить?
У файле ресурсов есть иконка из тремя изображениями (16*16, 32*32, 48*48). Как при загрузке иконки...

Как при записи названий файлов в ListView, поставить их иконки рядом по расширению форматом 16х16?
Как при записи названий файлов в ListView, поставить их иконки рядом по расширению форматом 16х16....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru