Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Иконку из EXE файла на Toolbar


Автор: Дмит 12.9.2006, 14:21
1
Извлекаю ассоциированные иконки из EXE файлов:
Private Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociatedIconA" _
(ByVal hInst As Long, _
ByVal lpIconPath As String, _
lpiIcon As Long) As Long
retur = ExtractAssociatedIcon(App.hInstance, "С:\portable.exe", 2)
 smile 
2
Связываю кнопку и иконкой в ImageList
Toolbar.Buttons(1).Image = 1

Подскажите промежуточные стадии, а именно как вставить иконку в ImageList (незаписывая её как файл на диск)?

Автор: BorisVorontsov 12.9.2006, 19:26
Код

DrawIconEx Me.hdc, 0, 0, retur, 0, 0, 0, 0, DI_NORMAL
DestroyIcon retur

ImageList.ListImages.Add 1, vbNullString, Me.Image

Автор: Дмит 13.9.2006, 00:34
Строка:
ImageList.ListImages.Add 1, vbNullString, Me.Image
Передаёт картинку с формы, если она была уже нарисована.
То. что рисует DrawIconEx, в ImageList не передаётся.
Может быть нужна настройка свойств формы? 

Автор: BorisVorontsov 13.9.2006, 02:12
AutoRedraw = False?

Автор: Дмит 15.9.2006, 22:11
Воспользовался Picture вместо формы, всё получилось:
Код

Private Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociatedIconA" (ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Long) As Long
Private Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
Private Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long
   Private Const DI_MASK = &H1
   Private Const DI_IMAGE = &H2
   Private Const DI_NORMAL = DI_MASK Or DI_IMAGE

Private Sub Form_Load()
Dim retur As Long
   retur = ExtractAssociatedIcon(App.Hinstance, "C:\Program Files\Movie Maker\moviemk.exe", 2)
   DrawIconEx Picture1.hdc, 0, 0, retur, 0, 0, 0, 0, DI_NORMAL
   ImgList.ListImages.Add 2, vbNullString, Picture1.Image
   Toolbar.Buttons(2).Image = 2
   DestroyIcon retur
End Sub

AutoRedraw = True дл формы и Picture, также AutoSize = True.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)