Autor
|
Tema: Cambiarle el Color a un Menú. (Leído 2,090 veces)
|
ssccaann43 ©
Desconectado
Mensajes: 792
¬¬
|
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 'Funciones Api '''''''''''''''''''''''''''''' Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long Private Declare Function SetMenuInfo Lib "user32" ( _ ByVal hMenu As Long, _ Mi As MENUINFO) As Long 'Constantes '''''''''''''''''''''''''''''' Private Const MIM_BACKGROUND As Long = &H2 Private Const MIM_APPLYTOSUBMENUS As Long = &H80000000 'Estructura MENUINFO Private Type MENUINFO cbSize As Long fMask As Long dwStyle As Long cyMax As Long RhbrBack As Long dwContextHelpID As Long dwMenuData As Long End Type 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(Color) End With 'Establecemos la informacion del menu 'pasandole el hwnd del menu que lo recupeamos 'con getMenu y en el otro parametro la estructura MENUINFO Call SetMenuInfo(GetMenu(hwndfrm), Mi) 'Dibujamos el color pasandole el hwnd del 'Form que contiene el menu Call DrawMenuBar(hwndfrm) End Function
Crean el menú en un Form y pegan este codigo: Form 'vbBlue es el color que asigne, pueden colocar otro... Saludos Private Sub Form_Initialize() Call Establecer_Color_Menu(Me.hwnd, vbBlue, True) End Sub
|
|
|
En línea
|
- Miguel Núñez Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio... "I like ^TiFa^"
|
|
|
|
Frikimaster
Desconectado
Mensajes: 35
Dim Frikimaster As BPF [Battle Programmer Friki]
|
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
Mensajes: 792
¬¬
|
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
Mensajes: 35
Dim Frikimaster As BPF [Battle Programmer Friki]
|
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 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
|
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. Public Function Establecer_Color_Menu( _ ByVal hwndfrm As Long, _ ByVal R As Long, ByVal G As Long, ByVal B 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(R, G, B)) End With End Function
Saludos
|
|
|
En línea
|
|
|
|
Frikimaster
Desconectado
Mensajes: 35
Dim Frikimaster As BPF [Battle Programmer Friki]
|
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.
|
|
|
|
|