VB-Homepage Tipp 372

Menüleiste - rechtsbündiges Anordnen des Hilfeeintrages

Bei den neueren Programmen eigentlich garnicht mehr oft zu sehen, vielleicht auch, weil es nicht mehr so einfach geht, wie unter VB3, ist das absetzen des "Hilfe" Eintrages der Menüleiste, an den rechten Rand.

Das es aber, wenn gewollt, immer noch geht, soll dieser Tipp zeigen.

1.
Für ein Demoprojekt erstellen Sie drei Menüeinträge, mit jeweils einem Untereintrag (EXTRAS-MENÜ EDITOR")
Bsp.:
helpmenu.gif (766 Byte)

2.
Allgemein/Deklarationen


Option Explicit
Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type

Private Const MF_STRING = &H0&
Private Const MF_HELP = &H4000&
Private Const MFS_DEFAULT = &H1000&

Private Const MIIM_ID = &H2
Private Const MIIM_SUBMENU = &H4
Private Const MIIM_TYPE = &H10
Private Const MIIM_DATA = &H20

Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal B As Boolean, lpMenuItemInfo As MENUITEMINFO) As Long
Private Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

3.
Form_Load


Dim mnuItemInfo As MENUITEMINFO, hMenu As Long
Dim BuffStr As String * 80

hMenu = GetMenu(Me.hwnd)
BuffStr = Space(80)

With mnuItemInfo
.cbSize = Len(mnuItemInfo)
.dwTypeData = BuffStr & Chr(0)
.fType = MF_STRING
.cch = Len(mnuItemInfo.dwTypeData)
.fState = MFS_DEFAULT
.fMask = MIIM_ID Or MIIM_DATA Or MIIM_TYPE Or MIIM_SUBMENU
End With

' 2 = Anzahl der Topeinträge, beginnend bei 0
If GetMenuItemInfo(hMenu, 2, True, mnuItemInfo) = 0 Then
MsgBox "GetMenuItemInfo failed. Error: " & Err.LastDllError, , "Error"
Else
mnuItemInfo.fType = mnuItemInfo.fType Or MF_HELP

If SetMenuItemInfo(hMenu, 2, True, mnuItemInfo) = 0 Then
MsgBox "SetMenuItemInfo failed. Error: " & Err.LastDllError, , "Error"
End If
End If

'Zeichnen des Menüs
DrawMenuBar (Me.hwnd)

4.
Starten Sie das Projekt und Sie werden sehen, das der Menüeintrag "Hilfe" am rechten Rand der Form angeordnet wird, auch wenn Sie die Form in der Breite ändern.

Tipp-Download

Quelle : Microsoft Knowledge Base

Zurück zur Übersichtsseite