Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
228
Assunto : Visual Basic
Titulo: Como inserir BITMAPS em um menu

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



Para inserirmos um bitmap em um menu é necessário utilizarmos uma função da API chamada SetMenuItemBitmaps.

Está função utiliza como parâmetro o handle do menu e do submenu, porém, como vocês poderão observar, um objeto menu não possui propriedade handle. Portanto teremos que recuperar o handle do menu e do submenu através das funções GetMenu e GetSubmenu.

Mas, na verdade, a função SetMenuItemBitmaps utiliza apenas o handle do menu e um ID do submenu. Portanto teremos que usar a função GetMenuItemID que, recebendo o handle de um menu/submenu, devolve seu ID.

Precisaremos declarar todas estas funções de API em um módulo, assim sendo devemos incluir em um módulo o seguinte código :

Declare Function GetMenu Lib "user32" (ByVal _
hWnd As Long) As Long
Declare Function GetSubMenu Lib "user32" (ByVal _
hMenu As Long, ByVal nPos As Long) As Long
Declare Function GetMenuItemID Lib "user32" _
(ByVal hMenu As Long, ByVal nPos As _
Long) As Long
Declare Function SetMenuItemBitmaps Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition _
As Long, ByVal wFlags As Long, ByVal _
hBitmapUnchecked As Long, ByVal _
hBitmapChecked As Long) As Long

Public Const MF_BITMAP As Long = &H4&


A imagem a ser inserida no menu deverá estar em uma picturebox dentro do form, picturebox esta que poderá estar hidden. Deveremos inserir um menu e um submenu como exemplo e um botão no form, que ao ser clicado vai realizar a operação de inserção da imagem do menu. Na prática, claro, isso estará no evento load do form.

Veja o código no botão :

Private Sub Command1_Click()
'Recupera o handle do menu formulário
hMenu& = GetMenu(Form1.hWnd)

'Recupera o handle do 1º menu
hSubMenu& = GetSubMenu(hMenu&, 0)

'Pega o menuId do 1º submenu
hID& = GetMenuItemID(hSubMenu&, 0)

'Adiciona o bitmap ao submenu
SetMenuItemBitmaps hMenu&, hID&, MF_BITMAP, _
Picture1.Picture, Picture1.Picture

'Você pode colocar dois bitmaps no menu
'Uma para o estado selecionado, e outro
'para o não selecionado.
End Sub


Observe o 0 indicado no GetSubMenu e no GetMenuItemID. O 0 identifica que estamos desejando informações a respeito do 1o menu. É um número sequencial representando os menus e iniciando em 0

Vale mencionar que já postamos na área de download de nosso site um componente ActiveX que realiza essa tarefa mais facilmente.

Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 5/29/2015 9:04:00 AM
nome: yhNwmnKRjLvViFAwrH
email: email@gmail.com
comentário:
NH6If0 Thank you, I've recently been looking for info about this subject for ages and yours is the best I've discovered till now. But, what about the bottom line? Are you sure about the source?

data: 5/6/2015 1:52:00 AM
nome: MPnblZHOusfuZeyXCYb
email: email@gmail.com
comentário:
GLrzur This is very interesting, You are a very skilled blogger. I've joined your feed and look forward to seeking more of your wonderful post. Also, I've shared your web site in my social networks!

data: 12/18/2014 9:25:00 AM
nome: GdbLZaRehn
email: email@gmail.com
comentário:
Qutpkk I think this is a real great post. Awesome.

data: 9/6/2011 8:37:00 AM
nome: Derley
email: figueira@interall.com.br
comentário:
Fiz tudo isso. Entretanto, um bitmap com 32 bits fica cortado no menu. Não sai inteiro.
Podes me ajudar ?

(talvez tenha algum comando para aumentar a área do bitmap no menu ???


data: 7/10/2010 6:49:00 PM
nome: Joaquim
email: Cambalinho_83@hotmail.com
comentário:
lamento mas este codigo tem 1 problema:(
quando passas o rato pelo menu, a imagem é inertida(as cores). como se pode resolver este problema?
obrigado


 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