¿Alguna idea?
|
|
#2 (permalink) |
![]() Fecha de Ingreso: febrero-2007
Mensajes: 424
|
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 |
|
|
|