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 23.007 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. |
Neu! sevCoolbar 3.0 Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Tipp des Monats Januar 2025 Dieter Otter Zeilen einer MultiLine-TextBox ermitteln (VB.NET) Dieser Zipp zeigt, wie man die Zeilen einer MultiLine-TextBox exakt so ermitteln kann, wie diese auch in der TextBox dargestellt werden. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |