elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Cambiarle el Color a un Menú.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cambiarle el Color a un Menú.  (Leído 2,090 veces)
ssccaann43 ©


Desconectado Desconectado

Mensajes: 792


¬¬


Ver Perfil
Cambiarle el Color a un Menú.
« en: 27 Noviembre 2008, 17:32 pm »

Bien, es solo un aporte para aquellos que desean cambiarle el color a un Menú.

Agreguen un módulo .bas y peguen el siguiente Codigo:

Módulo .bas
Código
  1.  'Funciones Api
  2.  ''''''''''''''''''''''''''''''
  3. Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
  4. Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
  5. Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
  6. Private Declare Function SetMenuInfo Lib "user32" ( _
  7.     ByVal hMenu As Long, _
  8.     Mi As MENUINFO) As Long
  9.  
  10. 'Constantes
  11. ''''''''''''''''''''''''''''''
  12. Private Const MIM_BACKGROUND As Long = &H2
  13. Private Const MIM_APPLYTOSUBMENUS As Long = &H80000000
  14.  
  15. 'Estructura MENUINFO
  16. Private Type MENUINFO
  17.     cbSize As Long
  18.     fMask As Long
  19.     dwStyle As Long
  20.     cyMax As Long
  21.     RhbrBack As Long
  22.     dwContextHelpID As Long
  23.     dwMenuData As Long
  24. End Type
  25.  
  26. Public Function Establecer_Color_Menu( _
  27.     ByVal hwndfrm As Long, _
  28.     ByVal Color As Long, _
  29.     ByVal SubMenu As Boolean) As Boolean
  30.  
  31.     Dim Mi As MENUINFO
  32.     Dim flags As Long
  33.     flags = MIM_BACKGROUND
  34.  
  35. If SubMenu Then
  36.         'si queremos establecer el color al submenú
  37.         'debemos asignarle esta constante al Flag
  38.         flags = flags Or MIM_APPLYTOSUBMENUS
  39. End If
  40.  
  41.     'Llenamos la estructura MENUINFO
  42.     With Mi
  43.         'Tamaño de la estructura
  44.         .cbSize = Len(Mi)
  45.          'Flag para  determinar el submenu
  46.         .fMask = flags
  47.          'Le enviamos este color a esta variable
  48.         .RhbrBack = CreateSolidBrush(Color)
  49.     End With
  50.  
  51.       'Establecemos la informacion del menu
  52.       'pasandole el hwnd del menu que lo recupeamos
  53.       'con getMenu y en el otro parametro la estructura MENUINFO
  54.     Call SetMenuInfo(GetMenu(hwndfrm), Mi)
  55.  
  56.      'Dibujamos el color pasandole el hwnd del
  57.      'Form que contiene el menu
  58.     Call DrawMenuBar(hwndfrm)
  59.  
  60. End Function
  61.  
  62.  
  63.  

Crean el menú en un Form y pegan este codigo:

Form
Código
  1. 'vbBlue es el color que asigne, pueden colocar otro... Saludos
  2. Private Sub Form_Initialize()
  3.  Call Establecer_Color_Menu(Me.hwnd, vbBlue, True)
  4. End Sub
  5.  


En línea

- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"
SONIC88

Desconectado Desconectado

Mensajes: 100



Ver Perfil
Re: Cambiarle el Color a un Menú.
« Respuesta #1 en: 28 Noviembre 2008, 17:01 pm »

 ;D vale hermano lo necesitaba hace días. Gracias y saludos!!


En línea

∞•••∞ MαЯcΘ™ ∞•••∞
Frikimaster

Desconectado Desconectado

Mensajes: 35


Dim Frikimaster As BPF [Battle Programmer Friki]


Ver Perfil
Re: Cambiarle el Color a un Menú.
« Respuesta #2 en: 2 Diciembre 2008, 00:11 am »

A ESTO le llamo yo comentar joder! Si no fuera por los comentarios no me entenderia de nada, grácias a cosas asi se aprenden muchas cosas, gracias :3  ^^


Frikimaster
En línea

La musica de la logica nunca fallara al sonar la melodia de la verdad.
ssccaann43 ©


Desconectado Desconectado

Mensajes: 792


¬¬


Ver Perfil
Re: Cambiarle el Color a un Menú.
« Respuesta #3 en: 2 Diciembre 2008, 20:54 pm »

A ESTO le llamo yo comentar joder! Si no fuera por los comentarios no me entenderia de nada, grácias a cosas asi se aprenden muchas cosas, gracias :3  ^^


Frikimaster

Pues de nada, espero puedas sacarle provecho al igual que el amigo SONIC88.
En línea

- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"
Frikimaster

Desconectado Desconectado

Mensajes: 35


Dim Frikimaster As BPF [Battle Programmer Friki]


Ver Perfil
Re: Cambiarle el Color a un Menú.
« Respuesta #4 en: 3 Diciembre 2008, 01:36 am »

Acabo de hacer una pequeña "modificación" al modulo.bas, a ver que os parece, la idea del color me gusta mucho, lo he estado "analizando" un poco, y he modificado la variable para que en vez de ser un color base de VB como vbBlue, vbGreen y demas, se pueda hacer con colores RGB, se que es sencillo de hacer, pero tened en cuenta que soy un novatillo en el tema, a ver que os parece xD

Código:
Public Function Establecer_Color_Menu( _
     ByVal hwndfrm As Long, _
     ByVal Color As Long, _
     ByVal SubMenu As Boolean) As Boolean
 
     Dim Mi As MENUINFO
     Dim flags As Long
     flags = MIM_BACKGROUND
 
If SubMenu Then
         'si queremos establecer el color al submenú
         'debemos asignarle esta constante al Flag
         flags = flags Or MIM_APPLYTOSUBMENUS
End If
 
     'Llenamos la estructura MENUINFO
     With Mi
         'Tamaño de la estructura
         .cbSize = Len(Mi)
          'Flag para  determinar el submenu
         .fMask = flags
          'Le enviamos este color a esta variable
          .RhbrBack = CreateSolidBrush(RGB(54, 54, 54))
     End With

Me gustan los colores oscuros, asi que he optado por ese negro claro gris raro, utilizando esta pagina me ha sido facil encontrar el color deseado http://www.miliuco.net/docs/rgb.htm.
Saludos ^^

Frikimaster
En línea

La musica de la logica nunca fallara al sonar la melodia de la verdad.
aaronduran2


Desconectado Desconectado

Mensajes: 790



Ver Perfil WWW
Re: Cambiarle el Color a un Menú.
« Respuesta #5 en: 3 Diciembre 2008, 01:49 am »

El problema es que tienes que especificar un argumento en el argumento Color, y al ser RGB, deberás poner tres argumentos (R As Long, G As Long, B As Long) para que puedas personalizarlo.
Código
  1. Public Function Establecer_Color_Menu( _
  2.     ByVal hwndfrm As Long, _
  3.     ByVal R As Long, ByVal G As Long, ByVal B As Long, _
  4.     ByVal SubMenu As Boolean) As Boolean
  5.  
  6.     Dim Mi As MENUINFO
  7.     Dim flags As Long
  8.     flags = MIM_BACKGROUND
  9.  
  10. If SubMenu Then
  11.         'si queremos establecer el color al submenú
  12.         'debemos asignarle esta constante al Flag
  13.         flags = flags Or MIM_APPLYTOSUBMENUS
  14. End If
  15.  
  16.     'Llenamos la estructura MENUINFO
  17.     With Mi
  18.         'Tamaño de la estructura
  19.         .cbSize = Len(Mi)
  20.          'Flag para  determinar el submenu
  21.         .fMask = flags
  22.          'Le enviamos este color a esta variable
  23.          .RhbrBack = CreateSolidBrush(RGB(R, G, B))
  24.     End With
  25. End Function

Saludos  ;)
En línea

Frikimaster

Desconectado Desconectado

Mensajes: 35


Dim Frikimaster As BPF [Battle Programmer Friki]


Ver Perfil
Re: Cambiarle el Color a un Menú.
« Respuesta #6 en: 3 Diciembre 2008, 03:01 am »

Oh, tiene mucha lógica si, 3 variables, una para cada color..Red, Green and Blue.., pero entonces..que diferencia hay en cuanto a resultado se refiere, de lo que he echo yo a lo que has echo tu? Entiendo que el procedimiento es diferente y mas complejo, pero entonces, que diferencia puede haber en el resultado? Son formas diferentes de hacerlo? Cambia alguna cosa?:O

Una ultima cosa, como lo haceis para poner colores diferenciadores en el foro, de cuando es una palabra clave etc? Al ser "codigo" si lo hago con tags de foro, me lo interpreta como parte del codigo, y me gustan esos colores que utilizais xD

Gracias por contestar ^^

Frikimaster
« Última modificación: 3 Diciembre 2008, 03:05 am por Frikimaster » En línea

La musica de la logica nunca fallara al sonar la melodia de la verdad.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como cambiar color de menu jquery?
Desarrollo Web
L0Ko 2 4,043 Último mensaje 15 Septiembre 2011, 00:36 am
por L0Ko
Cambiarle firmware GeoTab 10k-BT
Dispositivos Móviles (PDA's, Smartphones, Tablets)
BASUH 0 4,075 Último mensaje 18 Marzo 2015, 09:14 am
por BASUH
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines