menü-leiste

thecooper

Mitglied
hallo ihr,

ich hätte da mal eine frage. man kann ein menü ja ganz einfach mit dem menü-editor erstellen, was auch alles wunderbar klappt, aber nun ist mein problem, dass das menü immer grau ist, wobei meine anwedung schwarz ist. ich denke ich bin da nicht verloren, denn für alles gibt ne lösung. also: kann man die menü-farbe ändern? vielen dank schon mal im vorraus.
 
Ja, das geht.

Folgende Deklarationen im Formular sind nötig:

Code:
Private Type MENUINFO
  cbSize As Long
  fMask As Long
  dwStyle As Long
  cyMax As LoadPictureConstants
  hbrBack As Long
  dwContextHelpID As Long
  dwMenuData As Long
End Type

Private Declare Function GetMenu Lib "user32" _
       (ByVal hwnd As Long) As Long
Private Declare Function SetMenuInfo Lib "user32" _
       (ByVal hMenu As Long, ByRef lpcmi As MENUINFO) As Long

Private Declare Function CreateSolidBrush Lib "gdi32" _
       (ByVal crColor As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" _
       (ByVal hObject As Long) As Long

Private Declare Function OleTranslateColor Lib "olepro32" _
       (ByVal clr As OLE_COLOR, ByVal hpal As Long, _
        ByRef pcolorref As Long) As Long

Private Const MIM_BACKGROUND = &H2
Private Const MIM_APPLYTOSUBMENUS = &H80000000

Dim m_hBrush As Long




Dann ist noch diese Funktion nötig:

Code:
Private Function pTranslateColor(ByVal Color As OLE_COLOR) As Long
  OleTranslateColor Color, 0, pTranslateColor
End Function



Im Load Ereignis des Formulars folgendes ergänzen:

Code:
  Dim tMI As MENUINFO

  m_hBrush = CreateSolidBrush(pTranslateColor(Me.BackColor))

  With tMI
    .cbSize = Len(tMI)
    .fMask = MIM_BACKGROUND 'Or MIM_APPLYTOSUBMENUS
    .hbrBack = m_hBrush
  End With

  SetMenuInfo GetMenu(Me.hwnd), tMI



Der Sauberkeit halber sollten wir das Brush-Objekt im Unload Ereignis auch wieder entladen:

Code:
DeleteObject m_hBrush



Jetzt passt sich die Farbe der Menüleiste immer der Hintergrundfarbe der Form an.

MfG

f0x
 
is je ne menge code für so ne spielerei, aber funktioniert hat es. und jetzt um es noch komplett zu haben: wie ändert man die menü-schriftfarbe? denn schwarzes programm und schwarzes menü lassen die menüschrift verschwinden. im prinzip ist das nicht so wichtig, dann das menü ist nicht notwendig, aber es wäre doch mal gut zu wissen.
 

Neue Beiträge

Zurück