DrawIcon Picture1.hdc, 0&, 0&, hIcon
'DrawIconEx Picture1.hdc, 0&, 0&, hIcon, 0&, 0&, 0&, 0&, DI_DEFAULTSIZE
Да то совсем другая задача, показать все иконки для выбора. А тут иконка выбрана, теперь мучаюсь с её отрисовкой. Может, лучше рисовать (писать данные) её как-то в память как объект, а потом показывать где надо, а то Picture1.Picture не существует после такой отрисовки (DrawIcon)Ты шутишь? Тот диалог показывает иконки из любого файла, где они есть, а не только из shell32.
Space писал(а):ещё почему-то не работает DrawIconEx, хотя DrawIcon работает...
- Код: Выделить всё
DrawIcon Picture1.hdc, 0&, 0&, hIcon
'DrawIconEx Picture1.hdc, 0&, 0&, hIcon, 0&, 0&, 0&, 0&, DI_DEFAULTSIZEДа то совсем другая задача, показать все иконки для выбора. А тут иконка выбрана, теперь мучаюсь с её отрисовкой. Может, лучше рисовать (писать данные) её как-то в память как объект, а потом показывать где надо, а то Picture1.Picture не существует после такой отрисовки (DrawIcon)Ты шутишь? Тот диалог показывает иконки из любого файла, где они есть, а не только из shell32.
Space писал(а):я хочу от уже имеющегося hIcon загнать иконку в формат StdPicture и ещё получить связанную иконку 16х16 (пока только получаю 32х32)
Private Type PictDesc
cbSizeofStruct As Long
PicType As Long
hImage As Long
xExt As Long
yExt As Long
End Type
Private Type Guid
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (lpPictDesc As _
PictDesc, riid As Guid, ByVal fPictureOwnsHandle As Long, ipic As IPicture) As Long
Public Function IconToPicture(ByVal hIcon As Long) As StdPicture
If hIcon = 0 Then Exit Function
Dim oNewPic As Picture
Dim tPicConv As PictDesc
Dim IGuid As Guid
With tPicConv
.cbSizeofStruct = Len(tPicConv)
.PicType = vbPicTypeIcon
.hImage = hIcon
End With
With IGuid
.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
OleCreatePictureIndirect tPicConv, IGuid, True, oNewPic
Set IconToPicture = oNewPic
End Function
' Add any overlay image...
' Overlay images reside in bits 8-11 of the system's normal imagelist
' (as opposed to a state imagelist). The share overlay is the 1st image,
' shortcut is 2nd, 3rd, and 4th images vary. The SFGAO_SHARE
' (folders) and SFGAO_LINK (files) attributes are mutually exclusive.
If (ulAttr And (SFGAO_SHARE Or SFGAO_LINK)) Then
lvi.mask = LVIF_IMAGE Or LVIF_STATE
lvi.stateMask = LVIS_OVERLAYMASK
If (ulAttr And SFGAO_SHARE) Then
lvi.state = INDEXTOOVERLAYMASK(1)
Else ' (ulAttr And SFGAO_LINK)
lvi.state = INDEXTOOVERLAYMASK(2)
End If
Else
lvi.mask = LVIF_IMAGE ' no overlay...
End If
Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 10