Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
Vadym

Как изменить цвет меню?

28.02.2010, 20:29. Показов 3535. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как изменить цвет меню?
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.02.2010, 20:29
Ответы с готовыми решениями:

Изменить цвет фона и текста в контекстном меню
Подскажите, пожайлуйста, как сделать контекстное меню (при нажатии на мою кнопку правой клавишей мыши)синего цвета, например, а не серого....

Как изменить цвет TabControl?
Добрый день! Помогите, пожалуйста изменить цвет TabControl. А то TabPage получается, а TabControl никак не могу.

Как изменить цвет текста в textbox?
В textbox нету свойства ForeColor, а мне нужен белый цвет текста. P.S. Не спрашивайте зачем мне белым по белому писать.

6
Messir
28.02.2010, 20:46
Вообще - нужно делать OwnerDraw (стандартными средствами это сделать нельзя. Все цвета выставляются глобально в настройках экрана). Можно также применить один из уже готовых компонентов.
Comanche
01.03.2010, 12:02
Messir абсолютно прав.
На VBNET.RU есть примеры, как это сделать самому, через API.
Но лично я пользуюсь (в кои-то веки!) чужим freeware компонентом - с сайта VBACCELERATOR.COM. На удивление он классно работает. 'Классно' - для freeware - это в моём понимании 'безглючно'.
mzx4
01.03.2010, 12:03
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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 ' Переменная для удержания возвращаемых значения от 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 = vbRed  ' Здесь мы устанавливаем наш цвет кисти
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
 
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
If Button = vbRightButton Then 'Процедура контекстного меню
    Me.PopupMenu mnuMenu
End If
 
End Sub
Vadym
02.03.2010, 08:15
Спасибо за помощь. Но у меня возник еще один вопрос: как изменить цвет границ меню на такой же, что и мню. Еще раз спасибо.
Vadym
02.03.2010, 08:16
Спасибо за помощь. Но у меня возник еще один вопрос: как изменить цвет границ меню на такой же, что и меню. Еще раз спасибо.
Messir
02.03.2010, 11:41
Границы вообще убрать можно при желании. Ведь меню - это тоже окно, ему тоже можно убрать рамку, сделать плоским а-ля WinXP/Win 2003 Server...
Только тут уж надо ловить события вручную - обрабатывать сообщения WM_INITMENUPOPUP и ему подобные.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.03.2010, 11:41
Помогаю со студенческими работами здесь

Как изменить цвет Progress Bar - Исходник
Проблема в том, что напрямую через свойства контрола нельзя менять цвет баров и цвет фона у Progressbar. Однако, через API эту проблему...

Как изменить цвет текста на кнопке в VB6?
Как изменить цвет текста на кнопке в VB6? В свойствах кнопки нет опции ForeColor.

Как изменить цвет шрифта на кнопке (CommandButton)?
Привет ! В VB.NET и VBA это просто .ForeColor, а здесь как? Вариант подключить офисовскую библиотеку не предлагать. Не хочу,...

Как изменить цвет при некотором условии?
Не так давно стала разбираться с Visual Basic... Задача 1. Подскажите как можно реализовать, чтобы при заполнении первого TextBox1 линия...

Как изменить цвет активной ячейски списка ListBox?
В Дельфях, например, для это есть метод Canvas, а здесь я ничего подобного не нашел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru