
10/03/2007, 22:37
|
 | | | Fecha de Ingreso: febrero-2007 Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 18 años, 2 meses Puntos: 19 | |
Re: Menu a la derecha aca tenes un ejemplo claro:
El ejemplo utiliza las funciones Api: GetMenu, GetMenuItemID, ModifyMenu y DrawMenuBar.
Las 2 primeras recuperan los HWND necesarios para pasarle a ModifyMenu. Una ves ejecutado ModifyMenu debemos llamar a DrawMenuBar, que haría como un Refresh o repintado del mismo.
Importante, en este ejemplo hay 3 menues, y para indicar que vamos a alinear el último se especifica un 2 y no un 3 en el parámetro de ModifyMenu, es decir es el total -1
Controles
Colocar un Command1 y especificar en la línea de ModifyMenu el Index del último menú
Código fuente en el formulario
Option Explicit
'Delaraciones API
'************************************************* ***********************
Private Declare Function GetMenu Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetMenuItemID Lib "user32" (ByVal retMenu As Long, _
ByVal nPos As Long) As Long
Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" (ByVal _
retMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long, ByVal wIDNewItem As _
Long, ByVal lpString As Any) As Long
Private Declare Sub DrawMenuBar Lib "user32" (ByVal hWnd As Long)
Private Sub Command1_Click()
Dim retMenu As Long, IDMenu As Long
'recupera el HWND del menu de la aplicación
retMenu = GetMenu(Me.hWnd)
'Handle del menu a alinear
IDMenu = GetMenuItemID(retMenu, 2)
'Se le pasan los 2 parámetros anteriores, el tercer _
parámetro le indica la alineacion. El último el caption
ModifyMenu retMenu, IDMenu, &H4000, IDMenu, "Acerca de.."
'Se redibuja o refresca el menú pasandole al api el HWND de la venta que lo contiene
DrawMenuBar Me.hWnd
End Sub |