VB 5/6-Tipp 0139: Bitmaps vor MenüItem setzen
von ActiveVB
Beschreibung
Windows erlaubt es bei bekanntem Menühandle, eine kleine Grafik vor jeden Eintrag zu setzen. Es ist ein leichtes dies auch mit VB über die entsprechenden APIs zu machen. Das tolle daran ist, daß es egal ist um welches Menü es sich handelt, also auch im Systemmenü anwendbar.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: AppendMenuA (AppendMenu), GetMenu, GetSubMenu, GetSystemMenu, SetMenuItemBitmaps | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Bildfeld-Steuerelement "Picture8" ' Steuerelement: Bildfeld-Steuerelement "Picture7" ' Steuerelement: Bildfeld-Steuerelement "Picture6" ' Steuerelement: Bildfeld-Steuerelement "Picture5" ' Steuerelement: Bildfeld-Steuerelement "Picture4" ' Steuerelement: Bildfeld-Steuerelement "Picture3" ' Steuerelement: Bildfeld-Steuerelement "Picture2" ' Steuerelement: Bildfeld-Steuerelement "Picture1" ' Steuerelement: Beschriftungsfeld "Label1" ' Steuerelement: Menü "mnuMenü" ' Steuerelement: Menü "a" auf mnuMenü ' Steuerelement: Menü "b" auf mnuMenü ' Steuerelement: Menü "c" auf mnuMenü ' Steuerelement: Menü "d" auf mnuMenü ' Steuerelement: Menü "mnuExtras" ' Steuerelement: Menü "e" auf mnuExtras ' Steuerelement: Menü "f" auf mnuExtras ' Steuerelement: Menü "g" auf mnuExtras ' Steuerelement: Menü "h" auf mnuExtras Option Explicit 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 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 Declare Function GetSystemMenu Lib "user32" (ByVal _ hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function AppendMenu Lib "user32" Alias _ "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As _ Long, ByVal wIDNewItem As Long, ByVal lpNewItem As _ String) As Long Const MF_STRING = &H0& Const MF_SEPARATOR = &H800& Const MF_BYPOSITION = &H400& Const MF_BYCOMMAND = &H0& Private Sub Form_Load() Dim h1&, h2& h1 = GetMenu(Me.hwnd) h2 = GetSubMenu(h1, 0) Call SetMenuItemBitmaps(h2, 0, MF_BYPOSITION, _ Picture1.Picture, Picture1.Picture) Call SetMenuItemBitmaps(h2, 1, MF_BYPOSITION, _ Picture2.Picture, Picture2.Picture) Call SetMenuItemBitmaps(h2, 2, MF_BYPOSITION, _ Picture3.Picture, Picture3.Picture) Call SetMenuItemBitmaps(h2, 3, MF_BYPOSITION, _ Picture4.Picture, Picture4.Picture) h2 = GetSubMenu(h1, 1) Call SetMenuItemBitmaps(h2, 0, MF_BYPOSITION, _ Picture5.Picture, Picture5.Picture) Call SetMenuItemBitmaps(h2, 1, MF_BYPOSITION, _ Picture6.Picture, Picture6.Picture) Call SetMenuItemBitmaps(h2, 2, MF_BYPOSITION, _ Picture7.Picture, Picture7.Picture) Call SetMenuItemBitmaps(h2, 3, MF_BYPOSITION, _ Picture8.Picture, Picture8.Picture) h1 = GetSystemMenu(hwnd, False) Call AppendMenu(h1, MF_SEPARATOR, 0, "") Call AppendMenu(h1, MF_STRING, &H200, "B&efehl 1") Call AppendMenu(h1, MF_STRING, &H201, "Be&fehl 2") Call AppendMenu(h1, MF_STRING, &H202, "Bef&ehl 3") Call AppendMenu(h1, MF_STRING, &H203, "Befe&hl 4") Call SetMenuItemBitmaps(h1, &H200, MF_BYCOMMAND, _ Picture1.Picture, Picture1.Picture) Call SetMenuItemBitmaps(h1, &H201, MF_BYCOMMAND, _ Picture2.Picture, Picture2.Picture) Call SetMenuItemBitmaps(h1, &H202, MF_BYCOMMAND, _ Picture3.Picture, Picture3.Picture) Call SetMenuItemBitmaps(h1, &H203, MF_BYCOMMAND, _ Picture4.Picture, Picture4.Picture) End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB5 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB6 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 25 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.