Declare Function CreateBrushIndirect Lib "gdi32" (lpLogBrush As LOGBRUSH) As Long
CreateBrushIndirect создает логическую кисть с заданным стилем, цветом, узором. После окончания использования этим кистью воспользуйтесь функцией DeleteObject для удаления кисти и освобождения ресурсов компьютера.
Функция возвращает описатель созданной кисти в успешном случае или 0 в случае ошибки(используйте GetLastError для получения кода ошибки).
' Создаем цветное меню с помощь кисти Dim lRet As Long ' возвращаемое значение Dim hMenu As Long ' описатель меню Dim hBrush As Long ' описатель создаваемой кисти Dim lbBrushInfo As LOGBRUSH ' информация о кисти Dim miMenuInfo As MENUINFO ' информация о меню lbBrushInfo.lbStyle = BS_SOLID 'стиль кисти lbBrushInfo.lbColor = vbRed ' цвет кисти lbBrushInfo.lbHatch = 0 ' игнорируем ' Создаем кисть hBrush = CreateBrushIndirect(lbBrushInfo) ' Получим описатель меню hMenu = GetMenu(Me.hwnd) miMenuInfo.cbSize = Len(miMenuInfo) lRet = GetMenuInfo(hMenu, miMenuInfo) ' Устанавливаем маску для изменения цвета меню и его подменю miMenuInfo.fMask = MIM_APPLYTOSUBMENUS Or MIM_BACKGROUND ' Связываем нашу кисть с меню miMenuInfo.hbrBack = hBrush ' Заносим новую информацию в меню lRet = SetMenuInfo(hMenu, miMenuInfo) DeleteObject hBrush