Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ 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 ~
 Rechercher un site :
  

~ Partenaires ~

Fonction GetMenu

Declare Function GetMenu Lib "user32" ( _
                 
ByVal hWnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet tout simplement de récupérer le handle du menu d'une fenêtre.
hWnd est le handle de la fenêtre sur laquelle vous désirez travailler, la valeur retournée est le handle du menu.

Exemple d'utilisation :

' Déclaration de fonctions API
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)
...

Retour à la liste des API

Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr