В ImageList

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

В ImageList

Сообщение _Мика_ » 30.10.2003 (Чт) 22:17

Я пытался различными способами в ImagList всунуть иконки которые я извлек с помощью ExtractIconEx, не фига не получается :!: . Как эти сделать :( :?: :!:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

kazah_
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 13.01.2003 (Пн) 18:37
Откуда: Russia

Сообщение kazah_ » 31.10.2003 (Пт) 14:27

видно без ОСХ зде сь не обойтись...

ищи что-нтбудь такое (я где-то видел) или создавай сам.
Mr DEN - THE WAY YOU KNOW / Мр. ДЕН - Ваш Путь к Познанию!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 31.10.2003 (Пт) 14:46

2 kazakh

Бессмысленные постинги лучше не делать.



2 автор темы

В смысле не можешь добавить? Ты из на диск сохраняешь сперва или нет?

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 31.10.2003 (Пт) 15:20

Ладно. Вот кусок кода который извлекает иконки из Shell32.dll.
Теперь нужно както загнать каждую иконку по порядку в ИмажЛист

ExtractIconEx "shell32.dll", Z, mIcon, ByVal 0&, 1
DrawIcon Picture1.hdc, 32 * X, Y, mIcon
DestroyIcon mIcon

Надеюсь понятно :)
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 03.11.2003 (Пн) 11:22

Код: Выделить всё
Option Explicit

Private Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long
Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
Private Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long

Const PICTYPE_ICON As Long = 3
Private Type PICTDESC
  cbSizeofstruct As Long
  picType  As Long '
  hgdiobj As Long       ' Bitmap, icon, cursor, or metafile
End Type

Const IID_IPicture = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"
Private Declare Function CLSIDFromString Lib "ole32" (ByVal OleStringCLSID As Long, myGUID As Any) As Long
Private Declare Function OleCreatePictureIndirect Lib "olepro32" _
    (ByRef pPictDesc As PICTDESC, riid As Any, ByVal fOwn As Long, pPicture As IPicture) As Long

Private Sub Form_Click()
  Dim mIcon As Long
  Dim pi As PICTDESC, pic As IPicture, myGUID(0 To 15) As Byte, li As ListImage
  ExtractIconEx "shell32.dll", 1, mIcon, ByVal 0&, 1
  DrawIcon Picture1.hdc, 0, 0, mIcon
 
  pi.cbSizeofstruct = LenB(pi)
  pi.picType = PICTYPE_ICON
  pi.hgdiobj = mIcon
 
  CLSIDFromString StrPtr(IID_IPicture), myGUID(0)
  OleCreatePictureIndirect pi, myGUID(0), 1, pic
  Set li = ImageList1.ListImages.Add(, , pic)
  Set Picture2.Picture = li.Picture
 
  DestroyIcon mIcon
 
End Sub
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 03.11.2003 (Пн) 12:48

Хууух! Наконец то хоть ктото дал ответ я то думал уже все потеряно :) СПАСИБО огромное :!: :!: :!: правда еще не посмотрел но всеравно СПАСИБо!!!
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Dagobert
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 141
Зарегистрирован: 21.12.2002 (Сб) 6:48
Откуда: Russia

Сообщение Dagobert » 04.11.2003 (Вт) 8:45

Есть API-Функция
Код: Выделить всё
Private Declare Function ImageList_ReplaceIcon Lib "comctl32.dll" (ByVal himl As Long, ByVal I As Long, ByVal hIcon As Long) As Long

Правда, я использовал её с ImageList'ом созданным через API но может сработает.

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 04.11.2003 (Вт) 13:29

А насчет кода VI :?
Чо то он не фур фур, жалуется на pic
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 04.11.2003 (Вт) 14:26

Вместо IPicture, который определен в stdole библиотеке (в References...) можно использовать любой доступный интерфейс. Для этого замени определения IID_IPicture, OleCreatePictureIndirect и pic

с

Const IID_IPicture = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"

Private Declare Function OleCreatePictureIndirect Lib "olepro32" _
(ByRef pPictDesc As PICTDESC, riid As Any, ByVal fOwn As Long, pPicture As IPicture) As Long

Dim pi As PICTDESC, pic As IPicture

на

1. Через IUnknown, который есть у каждого объекта
Const IID_IUnknown = "{00000000-0000-0000-C000-000000000046}"
Const IID_IPicture = IID_IUnknown

Private Declare Function OleCreatePictureIndirect Lib "olepro32" _
(ByRef pPictDesc As PICTDESC, riid As Any, ByVal fOwn As Long, pPicture As IUnknown) As Long

Dim pi As PICTDESC, pic As IUnknown

2. Через IPictureDisp
Const IID_IPictureDisp = "{7BF80981-BF32-101A-8BBB-00AA00300CAB}"
Const IID_IPicture = IID_IPictureDisp

Private Declare Function OleCreatePictureIndirect Lib "olepro32" _
(ByRef pPictDesc As PICTDESC, riid As Any, ByVal fOwn As Long, pPicture As IPictureDisp) As Long

Dim pi As PICTDESC, pic As IPictureDisp

3. Через Object
Const IID_IDispatch = "{00020400-0000-0000-C000-000000000046}"
Const IID_IPicture = IID_IDispatch

Private Declare Function OleCreatePictureIndirect Lib "olepro32" _
(ByRef pPictDesc As PICTDESC, riid As Any, ByVal fOwn As Long, pPicture As Object) As Long

Dim pi As PICTDESC, pic As Object
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 04.11.2003 (Вт) 19:33

:shock: Ладно попробую :)
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 199

    TopList  
cron