Неужели и этого никто не знает? Ну дела! Держи ответ, вроде все правильно: Option Explicit '--------------------------------------------------------------- '----------------------------МЕНЮ------------------------------- ' CreateBrushIndirect используется, чтобы создать фоновую ' кисть для меню Private Declare Function CreateBrushIndirect Lib "gdi32" (lpLogBrush As LOGBRUSH) As Long ' GetMenu используется, чтобы получить дескриптор ' меню Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long ' GetMenuInfo используется, чтобы получить текущую ' информацию для меню Private Declare Function GetMenuInfo Lib "user32" (ByVal hMenu As Long, lpcmi As tagMENUINFO) As Long ' SetMenuInfo используется, чтобы установить фоновую ' кисть назад в меню и все подменю Private Declare Function SetMenuInfo Lib "user32" (ByVal hMenu As Long, lpcmi As tagMENUINFO) As Long ' Используется в запросах к CreateBrushIndirect Private Type LOGBRUSH lbStyle As Long ' Тип cтиля (мы только должны создать 'твердый фон для этого примера) lbColor As Long ' Установите цвет кисти lbHatch As Long ' Стиль штриховки (не используемый в этом 'примере, потому что это игнорируется для 'Твердого стиля) End Type ' Используется в GetMenuInfo и запросах SetMenuInfo Private Type tagMENUINFO cbSize As Long ' Размер структуры типа (используйте len, чтобы вычислить) fMask As Long ' Маска информации / действий, чтобы обработать dwStyle As Long ' Стиль меню (не используемый в этом примере) cyMax As Long ' Максимальная высота меню в пикселах (не используется в этом примере) hbrBack As Long ' Дескриптор фоновой кисти dwContextHelpID As Long ' ИДЕНТИФИКАТОР Справочного контекста (не используется в этом примере) dwMenuData As Long ' Данные меню (снова не используются в этом примере) End Type Private Const BS_SOLID = 0 ' Твердый стиль для кисти Private Const MIM_APPLYTOSUBMENUS = &H80000000 ' Обращение к маске подменю Private Const MIM_BACKGROUND = &H2 ' Фоновая маска '--------------------------------------------------------------- Private Sub Form_Load() '--------------------------------------------------------------- '-------------------------------МЕНЮ---------------------------- Dim ret As Long ' Переменная для удержаyия возвращаемых значения от GetMenuInfo и SetMenuInfo Dim hMenu As Long ' Переменная для удержания дескриптора меню Dim hBrush As Long ' Переменная для удержания дескриптора фоновой кисти, которую мы собираемся создавать Dim lbBrushInfo As LOGBRUSH ' Переменная для удержания информации CreateBrushIndirect API Dim miMenuInfo As tagMENUINFO ' Переменная для удержания информации меню lbBrushInfo.lbStyle = BS_SOLID ' Установить тип кисти lbBrushInfo.lbColor = &HE0E0E0 ' Здесь мы устанавливаем наш цветкисти lbBrushInfo.lbHatch = 0 ' Это значение игнорируется hBrush = CreateBrushIndirect(lbBrushInfo) ' Мы создаем нашу кисть hMenu = GetMenu(Me.hwnd) ' Получают дескриптор меню, которое изменяем miMenuInfo.cbSize = Len(miMenuInfo) ' Набор MenuInfo структурирует размер так, чтобы мы не получили ошибки ret = GetMenuInfo(hMenu, miMenuInfo) ' Получить фактическую информацию меню (в случае успеха возвращается 0) miMenuInfo.fMask = MIM_APPLYTOSUBMENUS Or MIM_BACKGROUND ' Устанавливают маску для изменений (изменение фона меню и всех подменю) miMenuInfo.hbrBack = hBrush ' Назначение нашей кисти для меню ret = SetMenuInfo(hMenu, miMenuInfo) ' Записывают нашу информацию назад в меню. Все OK (в случае успеха возвращается non-zero) '-------------------------------МЕНЮ---------------------------- '--------------------------------------------------------------- End Sub
Ответить
|