цвет меню

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Алексей.Ф.
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 09.09.2004 (Чт) 20:55
Откуда: г. Ставрополь

цвет меню

Сообщение Алексей.Ф. » 10.02.2005 (Чт) 19:10

Как изменить цвет линейки меню, чтобы он совпадал с фоновым цветом формы?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.02.2005 (Чт) 19:21

SetSystemColor
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.02.2005 (Чт) 20:08

Нет - тогда у всех меню в системе цвет изменится.
Надо просто задать нужный hbrBack вызовом SetMenuInfo.
Изображение

Алексей.Ф.
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 09.09.2004 (Чт) 20:55
Откуда: г. Ставрополь

Сообщение Алексей.Ф. » 10.02.2005 (Чт) 20:46

Надо просто задать нужный hbrBack вызовом SetMenuInfo.

Если не трудно, пример, как его задать? :?:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.02.2005 (Чт) 20:59

Код: Выделить всё
Option Explicit
Private Declare Function DrawMenuBar Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function GetMenu Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function SetMenuInfo Lib "user32.dll" (ByVal hmenu As Long, ByRef MENUINFO As MENUINFO) As Long
Private Declare Function CreateSolidBrush Lib "gdi32.dll" (ByVal crColor As Long) As Long
Private Type MENUINFO
   cbSize As Long
   fMask As Long
   dwStyle As Long
   cyMax As Long
   hbrBack As Long
   dwContextHelpID As Long
   dwMenuData As Long
End Type
Private Const MIM_BACKGROUND = &H2

Private Sub Form_DblClick()
Dim mi As MENUINFO
mi.cbSize = Len(mi)
mi.fMask = MIM_BACKGROUND
mi.hbrBack = CreateSolidBrush(vbRed)
SetMenuInfo GetMenu(hwnd), mi
DrawMenuBar hwnd
End Sub
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.02.2005 (Чт) 21:26

tyomitch, разве?
У меня сейчас нет MSDN, а по диалапу тормозит сильно, но насколько я помню (правда смутно), изменения назначаются только текущему окну.
Lasciate ogni speranza, voi ch'entrate.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 10.02.2005 (Чт) 21:39

Да, так и есть. Измененяется цвет только текущего меню текущего окна.

А разве надо было не это? :roll:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.02.2005 (Чт) 21:39

The SetSysColors function sends a WM_SYSCOLORCHANGE message to all windows to inform them of the change in color. It also directs the system to repaint the affected portions of all currently visible windows.

The SetSysColors function changes the current session only. The new colors are not saved when the system terminates.


Да, и что такое - "текущее окно"? Она же не принимает hWnd?
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.02.2005 (Чт) 21:41

2Amed: alibek говорит про SetSysColors.
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 10.02.2005 (Чт) 21:45

А, действительно, про SetSysColors.
Попробовал, действительно изменилась вся схема цветов Windows. А что ещё можно было ожидать? Действительно, нет же указателя на конкретное окно...

Алексей.Ф.
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 09.09.2004 (Чт) 20:55
Откуда: г. Ставрополь

Сообщение Алексей.Ф. » 10.02.2005 (Чт) 22:13

Попробовал. Выдает ошибку: User-defined type not defined.:cry:

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 10.02.2005 (Чт) 22:38

Все работает :roll: Попробуй скопировать еще раз ;)

Алексей.Ф.
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 09.09.2004 (Чт) 20:55
Откуда: г. Ставрополь

Сообщение Алексей.Ф. » 10.02.2005 (Чт) 23:24

Спасибо, работает. Я там в одном месте сам протормозил. :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 166

    TopList