Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
8 / 6 / 3
Регистрация: 02.04.2018
Сообщений: 247

Поток, listview две иконки

20.11.2020, 11:04. Показов 835. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго.
Есть такой код: (volvo добрый вечер)
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
    TSHFileInfo SFI = {0};
    TSearchRec filestruct;
    TIcon *icon = new TIcon;
    TListItem *newitem;
    String Dir;
    DWORD hi = SFGAO_SHARE ;
 
    ListView1->Items->BeginUpdate();
    ListView1->Items->Clear();
 
    ListView1->SmallImages = new TImageList(16, 16);
    ListView1->SmallImages->ShareImages = true;
    ListView1->SmallImages->Handle =
        SHGetFileInfo(L"*.*", hi, &SFI, sizeof(SFI),
        SHGFI_SMALLICON | SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES);
 
    Dir = Edit1->Text + "*.*";
    int res = FindFirst(Dir, faAnyFile, filestruct);
    while (!res) {
        newitem = ListView1->Items->Add();
        newitem->Caption = filestruct.Name;
        newitem->SubItems->Add(filestruct.Size);
 
        SHGetFileInfo((Dir + filestruct.Name).c_str(), hi, &SFI, sizeof(SFI),
            SHGFI_ICON | SHGFI_SYSICONINDEX | SHGFI_TYPENAME |
            SHGFI_USEFILEATTRIBUTES);
 
        newitem->ImageIndex = SFI.iIcon;
        res = FindNext(filestruct);
    }
 
    FileManagerForm->ListView1->Items->EndUpdate();
Есть несколько проблем: нужно добавить это код в формирование потока, куда-то добавить критическую секцию, синхронизировать потоки.
Буду благодарен, если поможете, а если код будет, вообще песня).
Кстати в коде выше, есть проблема: выводятся не все иконки (например папок) (думаю на параметры SHGetFileInfo).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.11.2020, 11:04
Ответы с готовыми решениями:

Иконки в ListView
Здравствуйте, форумчане! У меня возникла маленькая проблемка с использованием иконок в Listview контроле. Скриншот - Код, который...

ListView не выводит иконки
Вот код. BOOL InitListViewImageLists(HWND hWndListView) { int index; //HICON hIcon; HIMAGELIST hSmall,...

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

4
8 / 6 / 3
Регистрация: 02.04.2018
Сообщений: 247
20.11.2020, 17:09  [ТС]
С иконками разобрался, но как с потоками -то????? Помогите пожалуйста. Куда эту критическую секцию ставить...
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
    TSHFileInfo SFI = {0};
    TSearchRec filestruct;
    TIcon *Icon = new TIcon;
    TListItem *newitem;
    String Dir;
    HINSTANCE hInstance;
    int RESULT_FINDFIRST;
 
    Dir = Edit1->Text;
 
    ListView1->Items->BeginUpdate();
    ListView1->Items->Clear();
 
    RESULT_FINDFIRST = FindFirst(Dir + "*.*", faAnyFile, filestruct);
 
    while (!RESULT_FINDFIRST) {
        if ((filestruct.Name != ".") && (filestruct.Name != "..")) {
 
            newitem = ListView1->Items->Add();
            newitem->Caption = filestruct.Name;
            newitem->SubItems->Add(filestruct.Size);
 
            SHGetFileInfo((Dir + filestruct.Name).c_str(), 0, &SFI, sizeof(SFI),
                SHGFI_ICON | SHGFI_SMALLICON);
            Icon->Handle = SFI.hIcon;
            newitem->ImageIndex = ImageList1->AddIcon(Icon);
            DestroyIcon(SFI.hIcon);
        }
        RESULT_FINDFIRST = FindNext(filestruct);
    }
 
    ListView1->Items->EndUpdate();
0
8 / 6 / 3
Регистрация: 02.04.2018
Сообщений: 247
21.11.2020, 02:32  [ТС]
Помощи ждать неоткуда?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33414 / 21523 / 8237
Регистрация: 22.10.2011
Сообщений: 36,923
Записей в блоге: 12
21.11.2020, 14:55
Чего сделать в потоке нужно? Уточняйте. Просто так потоки ради потоков никому не интересны. Должен быть какой-то смысл в многопоточном приложении...
0
8 / 6 / 3
Регистрация: 02.04.2018
Сообщений: 247
21.11.2020, 23:37  [ТС]
volvo, Так так иконки довольно долго извлекаются из файлов, то, если, предположим, на форме изменить путь к папке (пример: текущая Windows -> system32) лично у меня проходит не менее 4 секунд (между BeginUpdate и EndUpdate).
Идея такова, чтобы распараллелить каким-либо образом вытаскивание иконок из файлов.

Создали 4 потока. Первый - хватает 1 файл (предположительно функций FindNext). Второй - 2... (Ну или не в такой последовательности). И так далее пока файлы в папке не закончатся.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2020, 23:37
Помогаю со студенческими работами здесь

Как загрузить в ListView системные иконки?
здраствуите!! нужна маленькая помощь. Хочу в ListView прибавить к моему списку системные иконки ,ну что бы отображал что это папка или ...

Иконки в ListView
Всем привет. Возникли две проблемы: 1. Написал код ну как бы не старался иконки не хотят отображаться в ListView. 2. Проблема с...

Иконки ListView
Добрый День! Такой вопрос. Я получаю список файлов в ListView, как привинтить иконку перед именем файла?

Иконки в ListView
Как к каждому пункту ListView добавить свою иконку?

Иконки в ListView
Добрый день! подскажите, в listView добавляю ассоциированные иконки: procedure GetICO; var shinfo: SHFILEINFO; ico: TIcon; s:...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru