Сообщение BM_SETIMAGE

Const BM_SETIMAGE = &HF7

Пошлите сообщение BM_SETIMAGE для изменения изображения (иконка или картинка) для графической кнопки

Возвращаемое значение

Сообщение BM_SETIMAGE возвращает дескриптор предыдущего растра, связанного с кнопкой. В случае ошибки возвращается 0

Параметры

wParam
Определяет тип изображения для кнопки. Может принимать следующие значения:
IMAGE_BITMAP = 0
IMAGE_ICON = 1
lParam
Дескриптор растра или значка, выводимого на кнопке

Пример

' Меняем вид кнопки Пуск. Добавьте на форму две кнопки
' и PictureBox
' Добавим в General Declaration глобальные переменные
Private m_hbmCustom As Long ' дескриптор нового изображения
Private m_hbmOriginal As Long  ' дескриптор старого изображения


Private Sub Command1_Click()
' Меняем изображение на свое
m_hbmCustom = LoadImage(0&, App.Path & "\start.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE Or LR_DEFAULTCOLOR Or LR_LOADFROMFILE)

Dim hWndTaskBar As Long
Dim hWndStart As Long
Dim hBmp As Long
Dim retval As Long

Picture1.Picture = LoadPicture(App.Path & "\start.bmp")
hWndTaskBar = FindWindowEx(0, 0, "Shell_TrayWnd", 0&)
If hWndTaskBar Then
' Находим дескриптор кнопки Пуск
    hWndStart = FindWindowEx(hWndTaskBar, 0, "BUTTON", 0&)
    If hWndStart Then
        If m_hbmCustom Then
            retval = SendMessage(hWndStart, BM_SETIMAGE, IMAGE_BITMAP, ByVal m_hbmCustom)
            If m_hbmOriginal = 0 Then
                m_hbmOriginal = retval
                Command2.Enabled = True
                Command1.Enabled = False
            End If
        End If
    End If
End If
End Sub

Private Sub Command2_Click()
' Восстанавливаем старое изображение кнопки Пуск
Dim hWndTaskBar As Long
Dim hWndStart As Long
Dim hBmp As Long
Dim retval As Long

If m_hbmOriginal = 0 Then Exit Sub

hWndTaskBar = FindWindowEx(0, 0, "Shell_TrayWnd", 0&)
If hWndTaskBar Then
    hWndStart = FindWindowEx(hWndTaskBar, 0, "BUTTON", 0&)
    If hWndStart Then
        If m_hbmOriginal Then
            retval = SendMessage(hWndStart, BM_SETIMAGE, IMAGE_BITMAP, ByVal m_hbmOriginal)
            m_hbmOriginal = 0
            Command2.Enabled = False
            Command1.Enabled = True
        End If
    End If
End If

End Sub

' Восстанавливаем прежние значения при выходе из программы
Private Sub Form_Unload(Cancel As Integer)

If m_hbmOriginal Then Call Command2_Click

Call DeleteObject(m_hbmCustom)
Set Form1 = Nothing

End Sub

Смотри также

BM_GETIMAGE

Категория

Кнопка