Gehören Sie auch zu denjenigen, die es satt haben, dass die Menüs innerhalb der eigenen Anwendung immer im tristen Windows-Grau (oder der im System festgelegten Farbe) angezeigt werden? Warum kann man nicht einfach wenigstens die Vordergrundfarbe frei festlegen? Das Ändern der Schriftart und/oder der Schriftattribute wäre eigentlich auch nicht schlecht. Also, worauf warten Sie! Um das ganze auch gleich ausprobieren zu können, erstellen Sie ein neues Projekt, öffnen den VB-Menüeditor und legen folgende Menüstruktur fest: Beenden (MenuExit) Plazieren Sie nun noch auf die Form eine PictureBox (picMenu) und setzen die Eigenschaften, wie folgt: Was Sie jetzt noch benötigen, ist nachfolgender Code. Diesen können Sie direkt in den Codeteil der Form einfügen. Option Explicit ' API Deklarationen 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 ModifyMenu Lib "user32" _ Alias "ModifyMenuA" ( _ ByVal hMenu As Long, _ ByVal nPosition As Long, _ ByVal wFlags As Long, _ ByVal wIDNewItem As Long, _ ByVal lpString As Any) As Long ' API Konstanten Const MF_BYCOMMAND = &H0& Const MF_BITMAP = &H4& Beim Laden der Form werden nun die drei Einträge das zweite Menüs (Test) ein wenig manipuliert: Private Sub Form_Load() Dim i As Long ' Handle der Menüzeile Dim hMenu As Long ' Handle betreffenden "SubMenüs" Dim hSubMenu As Long ' Das jeweilige Menü Items Dim lMenuItemID As Long ' Laufende Nummer der Schriftart Dim lFont As Long ' Der jeweilige Menütext Dim sMenuText As String ' Vordergrundfarben ReDim fColor(3) As Long fColor(1) = vbBlack fColor(2) = vbBlue fColor(3) = vbBlack On Error GoTo Error_ ' Prüfen, ob Schriftart "Verdana" vorhanden lFont = -1 For i = 0 To Screen.FontCount If Screen.Fonts(i) = "Verdana" Then lFont = i Exit For End If Next i If lFont = -1 Then lFont = 0 ' Sicher ist sicher ' Handle der Menüzeile hMenu = GetMenu(Me.hwnd) ' Handle des "Test"-Menüs hSubMenu = GetSubMenu(hMenu, 1) ' Menü-Einträge des "Test"-Menüs manipulieren For i = 1 To 3 sMenuText = mnuTest(i - 1).Caption Load picMenu(picMenu.Count) With picMenu(picMenu.Count - 1) ' neue Schriftart setzen .Font.Name = Screen.Fonts(lFont) .Font.Size = 6 + i .Font.Bold = (i = 2) ' Höhe .Height = .TextHeight(sMenuText) + 40 ' Breite .Width = .TextWidth(sMenuText) + 105 ' Vordergrundfarbe .ForeColor = fColor(i) ' Text des Menüeintrages in die Picture Box picMenu(picMenu.Count - 1).Print sMenuText .Picture = .Image ' Picture in das Menü setzten lMenuItemID = GetMenuItemID(hSubMenu, i - 1) Call ModifyMenu(hSubMenu, lMenuItemID, _ MF_BYCOMMAND Or MF_BITMAP, lMenuItemID, _ CLng(.Picture)) ' und schon ist der Dekel auf dem Topf ;-) End With Next i Exit Sub Error_: ' ... End Sub Starten Sie das Projekt und öffnen Sie das Menü "Test" - und lassen sich überraschen Wie funktioniert das? Dieser Tipp wurde bereits 22.677 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |