Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
115
Assunto : Visual Basic
Titulo: Como alinhar um menu na extrema direita da janela

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



O código abaixo utiliza algumas chamadas de API para fazer o alinhamento de um menu a direita. Para testa-lo crie um projeto standard, adicione 3 menus, copie o código no general do form e teste. O último menu será alinhado na extrema direita da tela.

2 linhas do código podem ser alteradas :
If GetMenuItemInfo(hMenu, 2, True, mnuItemInfo) = 0 Then

e

If SetMenuItemInfo(hMenu, 2, True, mnuItemInfo) = 0 Then

O número 2 nestas linhas indica o número do menu que será jogado para a direita (iniciando em 0, o 3o menu). Todos os menus posteriores ao número indicado serão jogados para a direita.

Veja o código :


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

Private Sub Form_Load()
Dim mnuItemInfo As MENUITEMINFO, hMenu As Long
Dim BuffStr As String * 80 ' Define as largest possible menu text.

hMenu = GetMenu(Me.hwnd) ' Retrieve the menu handle.
BuffStr = Space(80)
With mnuItemInfo ' Initialize UDT
.cbSize = Len(mnuItemInfo) ' 44
.dwTypeData = BuffStr & Chr(0)
.fType = MF_STRING
.cch = Len(mnuItemInfo.dwTypeData) ' 80
.fState = MFS_DEFAULT
.fMask = MIIM_ID Or MIIM_DATA Or MIIM_TYPE Or MIIM_SUBMENU
End With
' Use the desired item's position for the '3' below (zero-based list).
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
DrawMenuBar (Me.hwnd) ' Repaint top level Menu
End Sub

Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 1/31/2017 11:01:00 AM
nome: QgFNSXDgkSVKcCIt
email: derby451@hotmail.com
comentário:
iMkxHB http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 8:17:00 AM
nome: ZrmHeWRIgqgfl
email: jogcbfn@hotmail.com
comentário:
SK5zbz http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 8:12:00 AM
nome: MNxDPvkvQzCTbLapAmD
email: derby451@hotmail.com
comentário:
K2H3rW http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/5/2017 2:11:00 AM
nome: iukrZzIjRSuged
email: jfvynms4281rt@hotmail.com
comentário:
ILuPBU http://www.FyLitCl7Pf7ojQdDUOLQOuaxTXbj5iNG.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br