Я работаю над пользовательской формой и пытаюсь использовать логотип IE / Chrome и т. Д. В свойстве caption пользовательской формы, чтобы логотип отображался в рамке окна с последующим текстом.
Я просмотрел несколько страниц и обнаружил в сети следующий код, но в строке, связанной с ExtractIcon, обнаружена ошибка неопределяемой подфункции / функции.
Код пользовательской формы
Private Sub UserForm_Initialize
Dim strIconPath As String
Dim lngIcon As Long
Dim lnghWnd As Long
' Change to the path and filename of an icon file
strIconPath = "C:\Users\suttond\Desktop\Picture2.gif"
' Get the icon from the source
lngIcon = ExtractIcon(0, strIconPath, 0)
' Get the window handle of the userform
lnghWnd = FindWindow("ThunderDFrame", UserForm1.Caption)
'Set the big (32x32) and small (16x16) icons
SendMessage lnghWnd, WM_SETICON, True, lngIcon
SendMessage lnghWnd, WM_SETICON, False, lngIcon
End Sub
Код модуля
Private Declare Function FindWindow _
Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function ExtractIcon _
Lib "shell32.dll" Alias "ExtractIconA" _
(ByVal hInst As Long, _
ByVal lpszExeFileName As String, _
ByVal nIconIndex As Long) As Long
Private Declare Function SendMessage _
Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Integer, _
ByVal lParam As Long) As Long
Private Const WM_SETICON = &H80
По сути, небольшой логотип IE Explorer будет отображаться наслева от текста уже в заголовке.
Редактировать
Функции кода модуля обновлены для общего доступа, чтобы их можно было вызывать из кода инициализации.Больше не появляется ошибка извлечения, но изображение не отображается в заголовке пользовательской формы.