Значки с aplpha-каналом в Listview и Treeview

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Warn
Обычный пользователь
Обычный пользователь
 
Сообщения: 52
Зарегистрирован: 08.12.2005 (Чт) 20:34
Откуда: Питер

Значки с aplpha-каналом в Listview и Treeview

Сообщение Warn » 10.12.2005 (Сб) 23:45

Собственно название топика и есть сам вопрос. Как можно использовать значки с альфа-каналом в этих контролах? Для них нужно инициализировать ImageList. Но он не поддерживает альфу. Да, желательно средствами ВБ и АПИ

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 11.12.2005 (Вс) 15:00

Не поддерживает Listview и Treeview, а Imagelist, по моим субъективным наблюдениям, всё поддерживает. Нельзя только добавить такие значки в режиме разработки. Во время выполнения всё отлично добавляется. Я отрисовываю Listview сам, перехватывая сообщения, посылаемые контейнеру.

Warn
Обычный пользователь
Обычный пользователь
 
Сообщения: 52
Зарегистрирован: 08.12.2005 (Чт) 20:34
Откуда: Питер

Сообщение Warn » 11.12.2005 (Вс) 17:44

Alexanbar
А можно поподробнее с кодом? Во время работы программы я пробовал добавить в ImageList значок с альфа-каналом, но бэйсик выдает ошибку Invalid Picture. :(

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 11.12.2005 (Вс) 19:25

Вначале используется ф-я EXtractIconEx.


If r = 32 Then
'размер иконки 32 или 16
ExtractIconEx Path_F, IconNUmber, hIcon, 0, 1
Else
ExtractIconEx Path_F, IconNUmber, 0, hIcon, 1
End If



Далее из hicon делаем IPicture:

Set Pic = IconToPicture(hIcon)


Public Function IconToPicture(ByVal hIcon As Long) As IPicture
Dim iPic As IPicture, picDes As PictDesc, iidIPicture As Guid
With picDes
.cbSizeofStruct = Len(picDes)
.picType = &H3
.hImage = hIcon
End With

With iidIPicture
.Data1 = &H7BF80980
.Data2 = &HBF32
.Data3 = &H101A
.Data4(0) = &H8B
.Data4(1) = &HBB
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H30
.Data4(6) = &HC
.Data4(7) = &HAB
End With
Call OleCreatePictureIndirect(picDes, iidIPicture, True, IconToPicture)
End Function


Далее добавляем в Imagelist:


Imagelist1.Listimages.Add ,"Ключ иконки",Pic

Warn
Обычный пользователь
Обычный пользователь
 
Сообщения: 52
Зарегистрирован: 08.12.2005 (Чт) 20:34
Откуда: Питер

Сообщение Warn » 11.12.2005 (Вс) 21:09

Спасибо! Вот еще нашел ссылку по теме http://bbs.vbstreets.ru/viewtopic.php?p=22933&sid=3558e2b48bb336eb0eaf66f0d73a215a


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 125

    TopList