~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période. Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes. ~ Rechercher ~
~ Annuaire VB ~
~ Partenaires ~
|
Divers : Alignement de menu Il est possible de placer un menu autre part qu'automatiquement à gauche comme cela est fait par
visual basic. Il peut être positionné à droite. Cela n'est pas forcément recommandé,
les "normes" actuelles de présentation tendent à laisser les menus ou ils sont (à gauche).
M'enfin, ca peut apporter une touche d'originalité à un programme. Sous Windows 3.x c'est généralement
le menu d'aide qui se trouvait à cet endroit là. Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" ( _ ByVal hMenu As Long, ByVal un As Long, ByVal B As Boolean, _ lpMenuItemInfo As MENUITEMINFO) As Long Public Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" ( _ ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, _ lpcMenuItemInfo As MENUITEMINFO) As Long Public Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long ' Déclaration de constantes Public Const MF_STRING = &H0& Public Const MF_HELP = &H4000& Public Const MFS_DEFAULT = &H1000& Public Const MIIM_ID = &H2 Public Const MIIM_SUBMENU = &H4 Public Const MIIM_TYPE = &H10 Public Const MIIM_DATA = &H20 ' Déclaration du type MENU Public 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 ' Tout le code suivant doit être placé dans l'évènement ' Form_Load de la fenêtre concernée. ' Déclaration des variables utilisées Dim mnuMenuItem As MENUITEMINFO Dim lgMenu As Long Dim stBuffer As String * 80 ... ' Récupère le handle du menu lgMenu = GetMenu(Me.hwnd) stBuffer = Space$(80) ' Initialisation de la variable With mnuMenuItem .cbSize = Len(mnuMenuItem) .dwTypeData = stBuffer & Chr$(0) .fType = MF_STRING .cch = Len(mnuMenuItem.dwTypeData) .fState = MFS_DEFAULT .fMask = MIIM_ID Or MIIM_DATA Or MIIM_TYPE Or MIIM_SUBMENU End With ' Mettre l'indice correspondant au menu à placer à droite à la place 1. ' Les indices de menu commencent à partir de 0. ' Cela ne concerne que les menu de premier niveau. If GetMenuItemInfo(lgMenu, 1, True, mnuMenuItem) = 0 Then MsgBox "Erreur GetMenuItemInfo. " & Err.LastDllError, vbExclamation, "Erreur" Else mnuMenuItem.fType = mnuMenuItem.fType Or MF_HELP If SetMenuItemInfo(lgMenu, 1, True, mnuMenuItem) = 0 Then MsgBox "Erreur SetMenuItemInfo. " & Err.LastDllError, _ vbExclamation, "Erreur" End If End If ' Rafraîchissement du menu MenuDrawMenuBar (Me.hwnd) ... |