Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как в элементе управления CListCtrl в разных строках вывести разные иконки?

321
15 октября 2002 года
Doomych
124 / / 20.01.2000
Код нижеследующий. Результат: во всех строках иконки - одинаковые. Но, по крайней мере, с каждым циклом for дескриптор иконок hIcon принимает разные значения и список изображений m_imageList заполняется этими дескрипторами.
Как в CListCtrl в разных строках вывести разные иконки?

TCHAR str[256]; // для преобразования CString->LPTSTR
CFile* pFile = NULL;
HICON hIcon; // дескриптор иконки
WORD iconNum = 0; // № иконки в файле

m_imageList.Create(16, 16, ILC_COLOR, 1, 1); // список изображений
m_listView.Create(WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP |
LVS_REPORT | LVS_EDITLABELS | LBS_NOTIFY,
CRect(7, 7, 593, 220), this, IDC_LISTVIEW); // просмотровое окно списка
m_listView.SetImageList(&m_imageList, LVSIL_SMALL);

// Формируем колонки
.............

// Заполняем список строками, пытаемся вставить иконки
for ( int i = 0; i < 10; i++ )
{
CString sFile = m_aFileName.GetAt(i); // получаем строку с именем файла
try
{
pFile = new CFile(_T(sFile), CFile::modeRead | CFile::shareDenyNone);
lstrcpy(str, sFile);
hIcon = ::ExtractAssociatedIcon(::AfxGetInstanceHandle(), str, &iconNum);
m_imageList.Add(hIcon);
lvItem->iImage = i;
...................
delete pFile;
}
catch(...) {........}
}

Спасибо за ответ!
2.1K
15 октября 2002 года
kmn
29 / / 09.10.2002
Цитата:
Originally posted by Doomych
Код нижеследующий. Результат: во всех строках иконки - одинаковые. Но, по крайней мере, с каждым циклом for дескриптор иконок hIcon принимает разные значения и список изображений m_imageList заполняется этими дескрипторами.
Как в CListCtrl в разных строках вывести разные иконки?

TCHAR str[256]; // для преобразования CString->LPTSTR
CFile* pFile = NULL;
HICON hIcon; // дескриптор иконки
WORD iconNum = 0; // № иконки в файле

m_imageList.Create(16, 16, ILC_COLOR, 1, 1); // список изображений
m_listView.Create(WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP |
LVS_REPORT | LVS_EDITLABELS | LBS_NOTIFY,
CRect(7, 7, 593, 220), this, IDC_LISTVIEW); // просмотровое окно списка
m_listView.SetImageList(&m_imageList, LVSIL_SMALL);

// Формируем колонки
.............

// Заполняем список строками, пытаемся вставить иконки



for ( int i = 0; i < 10; i++ )
{
CString sFile = m_aFileName.GetAt(i); // получаем строку с именем файла
try
{
pFile = new CFile(_T(sFile), CFile::modeRead | CFile::shareDenyNone);
lstrcpy(str, sFile);
hIcon = ::ExtractAssociatedIcon(::AfxGetInstanceHandle(), str, &iconNum);
m_imageList.Add(hIcon);
lvItem->iImage = i;
...................
delete pFile;
}
catch(...) {........}
}

Спасибо за ответ!



// так будет более надежно
lvItem->iImage = m_imageList.Add(hIcon);

321
17 октября 2002 года
Doomych
124 / / 20.01.2000
Отбой, разобрался!

Все оказалось предельно просто: при заполнении структуры LV_ITEM, задавая маску достоверности (mask), я не указал, что член iImage содержит достоверные данные, то есть в маску надо было добавить LVIF_IMAGE.
321
17 октября 2002 года
Doomych
124 / / 20.01.2000
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог