Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Цвет меню и строки состояния


Автор: amt 21.9.2005, 20:19
smile
Как сделать, чтобы цвет меню и строки сотояния был такойже как backcolor формы?
smile
Заранее благодарен.
smile

Автор: Akina 21.9.2005, 20:22
Какого именно меню? какой именно строки состояния? с цветовой схемой Винды хочешь поиграться по GotFocus/LostFocus? удачи...

Автор: Staruha 21.9.2005, 20:45
Может как в XP. Когда делаешь форму на VBA она гармонирует с темой рабочего стола

Автор: amt 21.9.2005, 21:20
Если backcolor формы сделать например зеленого цвета, то строка меню (Файл, Правка, Вид...) и строка состояния StatusBar остаются серыми. Как у них поменять цвет не трогая цветовые схемы Windows?

Автор: Spawn™Production® 21.9.2005, 21:22
Сделать свои контролы с поддержкой цвета smile Ну или взять уже готовые контролы с расширенными возможностями...
Добавлено @ 21:25
Хм, для статус-бара есть решение - применить рисунок для панели.

Автор: amt 21.9.2005, 21:39
Spawn™Production®
Цитата
Сделать свои контролы с поддержкой цвета

Я не совсем понял, ты предлагаешь создаватьсвои графические объекты?. Можно поподробнее.
На счет StatusBar понял - попробую.
С уважением, AMT

Автор: Spawn™Production® 21.9.2005, 21:43
Так, для изменения цвета фона меню:
http://badboy.altnet.ru/?page=s52

Автор: ~FoX~ 23.9.2005, 14:49
amt
Не торогая цветовой схемы не получиться......компаненты стандартные.
Решений несколько - самое простое, это в момент перерисовки взять canvas или как оно там в ВБ называется (hDC - вроди) и рисовать на нем самостоятельно....Т.е. получаем девайс контекст и уже над ним изгиляемся:
Код

Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long


Определяем кисть для заливки:
Код

Private Declare Function CreateBrushIndirect Lib "gdi32" (lpLogBrush As LOGBRUSH) As Long

Только не забудь цвет текста поменять
Код

Private Declare Function TextOut Lib "gdi32.dll" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function SetTextColor Lib "gdi32.dll" (ByVal hdc As Long, ByVal crColor As Long) As Long

Остальное в можно найти в МСДН, удачи....

Автор: amt 26.9.2005, 21:09
Spawn™Production®
Спасибо за ссылку.
По поводу StatusBar. Пробовал применять картинку, но она перекрывает текст в панелях, кроме того у меня в StatusBar запихан ProgressBar. Может я чего не так делал?
Кто знает - подскажите.

Автор: amt 10.10.2005, 21:15
Еще вопрос.
smile Можно ли менять цвет окна MsgBox и если да, то как ? smile

Автор: Exception 10.10.2005, 21:25
Цитата(amt @ 10.10.2005, 22:15)
цвет окна MsgBox

то есть цвет? фоновый?

Автор: amt 10.10.2005, 21:29
Да! типа BackColor.

Автор: Spawn™Production® 10.10.2005, 21:52
Может через API этого и удастся добиться... лично я много разных приколов видел, но имхо проще свой MsgBox сделать... там и картинки и всё что угодно можно впихать...

Автор: amt 15.10.2005, 21:05
Цитата
но имхо проще свой MsgBox сделать...

Ты имеешь ввиду с помощью формы или диалогового окна?

Автор: kulibin 16.10.2005, 21:12
А как получить hwnd меню?

Автор: cardinal 16.10.2005, 21:31
http://vingrad.ru/VB-VB-002144
и тут посмотри еще может чего найдешь...
http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&target=main_panel§ion=615

Автор: Exception 17.10.2005, 16:25
Цитата(kulibin @ 16.10.2005, 22:12)
получить hwnd меню?

ты про hMenu?

Автор: kulibin 17.10.2005, 16:50
С этим я уже разобрался - там ссылка была выше где-то в этой теме. Супер.

Добавлено @ 16:52
Туда бы ещё иконки . . .
Откопал примерчик - а он не работает. Или я дурак - или это шутка:

Положить картинку в меню:
Добавьте на форму 3 Image. Создайте меню с тремя подменю

Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags _
As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
Private Const MF_BITMAP = &H4&
Private Sub Form_Load()
Dim hMenu&, hSubMenu&, hMenuItem& 'объявление переменых типом Long
hMenu = GetMenu(Me.hwnd)
hSubMenu = GetSubMenu(hMenu, 0)
hMenuItem = GetMenuItemID(hSubMenu, 0)
SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image1.Picture, Image1.Picture
hMenuItem = GetMenuItemID(hSubMenu, 1)
SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image2.Picture, Image2.Picture
hMenuItem = GetMenuItemID(hSubMenu, 2)
SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image3.Picture, Image3.Picture
End Sub
Добавлено @ 16:54
Да - и ещё одно разочарование: контекстные меню красятся только если они вызваны щелчком по форме. А вот в трее(компонент MBTray) и на кнопке(Inovartis button) - нифига. Да и в текстбоксах стандартных - тоже не фурычит. А жаль.

Автор: Exception 21.10.2005, 15:57
Цитата(kulibin @ 17.10.2005, 17:50)
Да и в текстбоксах стандартных - тоже не фурычит.

и не будет. хочешь - субклассь их...
Цитата(kulibin @ 17.10.2005, 17:50)
Откопал примерчик - а он не работает

что именно?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)