Error in modifying the color of the main menu

Moderator: Rathinagiri

User avatar
jairpinho
Posts: 230
Joined: Mon Jul 18, 2011 5:36 pm
Location: Rio Grande do Sul - Brasil
Contact:

Error in modifying the color of the main menu

Post by jairpinho » Sun Apr 22, 2012 7:37 pm

I'm not getting in hmg change the color of the menu following example

Code: Select all

#include <hmg.ch>

Function Main

        Load Window Main
        Main.Center
        Main.Activate

Return



Func CMenu()
 Local hMenu    := _GetMenuId(GetFormHandle("MAIN"))
 Local aColor   := {255,255,255}
 Local lSubMenu := .F.
 _ColorMenu(GetFormHandle("MAIN"),aColor, lSubMenu)
Return Nil




#pragma BEGINDUMP
#include <windows.h>
#include <commctrl.h>
#include "hbapi.h"
#include "hbvm.h"
#include "hbstack.h"
#include "hbapiitm.h"
#include "winreg.h"
#include "tchar.h"

HB_FUNC( _GETMENUID)
{
 hb_retnl((LONG)GetMenu((HWND)hb_parnl(1)));
}

HB_FUNC ( _COLORMENU )
{
HMENU iMenu;
MENUINFO iMenuInfo ;
COLORREF lColor = {255,255,255};
BOOL lSubMenu = hb_parl(3);


iMenu = GetMenu((HWND) hb_parnl(1));
GetMenuInfo(iMenu, &iMenuInfo);
iMenuInfo.cbSize = sizeof(MENUINFO);



iMenuInfo.hbrBack = CreateSolidBrush(lColor);


SetMenuInfo(iMenu, &iMenuInfo);

if (lSubMenu)
 {
   iMenuInfo.fMask    = MIM_BACKGROUND | MIM_APPLYTOSUBMENUS ;
 }
else
 {
   iMenuInfo.fMask    = MIM_BACKGROUND;
 }



SetMenuInfo(iMenu, &iMenuInfo);


}



HB_FUNC ( _COLORSUBMENU )
{
HMENU      iMenu;
MENUINFO   iMenuInfo ;
iMenu              = GetMenu((HWND) hb_parnl(1));
GetMenuInfo(iMenu, &iMenuInfo);
iMenuInfo.cbSize   = sizeof(MENUINFO);
iMenuInfo.fMask    = MIM_BACKGROUND | MIM_APPLYTOSUBMENUS;
iMenuInfo.hbrBack  = CreateSolidBrush(RGB(hb_parni(2,1),hb_parni(2,2),hb_parni(2,3)));
SetMenuInfo(iMenu, &iMenuInfo);
DrawMenuBar((HWND) hb_parnl(1));
}


#pragma ENDDUMP


error build.log

hbmk2: Harbour: Compilando m¢dulos...
Harbour 3.0.0 (Rev. 16951)
Copyright (c) 1999-2011, http://harbour-project.org/
hbmk2: Compilando...
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg: In function 'HB_FUN__COLORMENU':
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:42:1: warning: excess elements in scalar initializer
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:42:1: warning: (near initialization for 'lColor')
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:42:1: warning: excess elements in scalar initializer
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:42:1: warning: (near initialization for 'lColor')
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:59:25: error: 'MIM_BACKGROUND' undeclared (first use in this function)
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:59:25: note: each undeclared identifier is reported only once for each function it appears in
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:59:42: error: 'MIM_APPLYTOSUBMENUS' undeclared (first use in this function)
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg: In function 'HB_FUN__COLORSUBMENU':
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:82:22: error: 'MIM_BACKGROUND' undeclared (first use in this function)
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:82:39: error: 'MIM_APPLYTOSUBMENUS' undeclared (first use in this function)
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:83:1: error: too many arguments to function 'hb_parni'
C:/HMG3.0.38/harbour/include/hbapi.h:637:31: note: declared here
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:83:1: error: too many arguments to function 'hb_parni'
C:/HMG3.0.38/harbour/include/hbapi.h:637:31: note: declared here
K:\@Prog-Xbase\HMG-3038\Projetos\HMGFORUM\Menucolor\main.prg:83:1: error: too many arguments to function 'hb_parni'
C:/HMG3.0.38/harbour/include/hbapi.h:637:31: note: declared here
hbmk2: Erro: Executando compilador C/C++. 1
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -IC:/HMG3.0.38/harbour/include -I../../.. -IC:/HMG3.0.38/include ../../../.hbmk/win/mingw/main.c
[u]Moderator Notes[/u] (Pablo César) wrote:Topic moved from Forum en Español.
Attachments
COLOR_MENU-OK.zip
(429.52 KiB) Downloaded 169 times
Jair Pinho
HMG ALTA REVOLUÇÃO xBASE
HMG xBASE REVOLUTION HIGH
http://www.hmgforum.com.br

User avatar
danielmaximiliano
Posts: 2081
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Error in modifying the color of the main menu

Post by danielmaximiliano » Fri Apr 27, 2012 4:32 am

Ola Jair :
MenuColor só existe em MiniGUI, olhar para o novo exemplo
Espero que ajude.
C:\MiniGUI\SAMPLES\Advanced\MenuEx\demo.exe
Greenshot_2012-04-27_01-12-23.jpg
Greenshot_2012-04-27_01-12-23.jpg (105.73 KiB) Viewed 4260 times
Function GetMenuColors() está em
C:\MiniGUI\SOURCE\c_menu.c

IsExtendedMenuStyleActive() no i_menu.ch

Code: Select all

#translate IsExtendedMenuStyleActive () => _NewMenuStyle ()
_NewMenuStyle () No C:\MiniGUI\SOURCE\c_menu.c

Code: Select all

HB_FUNC( _NEWMENUSTYLE )
{
   if( HB_ISLOG(1) )
      newStyle = hb_parl(1);
   hb_retl( newStyle );
}
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`.HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. : +54901169026142
Telegram Name : DaNiElMaXiMiLiAnO

Carlos Britos
Posts: 220
Joined: Sat Aug 02, 2008 5:03 pm

Re: Error in modifying the color of the main menu

Post by Carlos Britos » Sat Apr 28, 2012 1:32 am

jairpinho wrote:I'm not getting in hmg change the color of the menu following example
Hi, try this, it's working for me.

Code: Select all

/*-----------------------------------------------------------------*/

#define MIM_BACKGROUND              0x00000002
#define MIM_APPLYTOSUBMENUS         0x80000000

/*-----------------------------------------------------------------*/

HB_FUNC ( MENU_BACKCOLOR )
{
   PHB_ITEM pSelf = hb_param( 0, HB_IT_OBJECT );
   HMENU hMenu = (HMENU) ObjGetNL( pSelf, "NHANDLEMENU" );
   HWND hPadre = (HWND)ObjGetNL( ObjGetObject( pSelf, "OPADRE" ), "HANDLE" );
   MENUINFO   iMenuInfo ;
   LONG       nColor ;

   // si es un solo param es el color
   if( HB_ISNIL(2) )
   {
      nColor = (LONG) hb_parnl(1) ;
   }
   // si son 2 params el priemro es el numero del submenu, el segundo es el color
   else
   {
      hMenu = GetSubMenu( hMenu, hb_parni(1) -1 );
      nColor = (LONG) hb_parnl(2) ;
   }

   GetMenuInfo( hMenu, &iMenuInfo );
   iMenuInfo.cbSize   = sizeof(MENUINFO);
   iMenuInfo.fMask    = MIM_BACKGROUND | MIM_APPLYTOSUBMENUS;
   iMenuInfo.hbrBack  = CreateSolidBrush( nColor );
   SetMenuInfo( hMenu, &iMenuInfo );
   DrawMenuBar( (HWND) hPadre );
}

/*-----------------------------------------------------------------
Regards/Saludos, Carlos (bcd12a)

User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Re: Error in modifying the color of the main menu

Post by Pablo César » Sat Apr 28, 2012 2:19 pm

Carlos Britos, when I compile in HMG your code C is presenting errors:

undefined reference to ObjGetNL and ObjGetObject

Probably functions are missing...
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

User avatar
danielmaximiliano
Posts: 2081
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Error in modifying the color of the main menu

Post by danielmaximiliano » Sat Apr 28, 2012 2:28 pm

Pablo César wrote:Carlos Britos, when I compile in HMG your code C is presenting errors:

undefined reference to ObjGetNL and ObjGetObject

Probably functions are missing...
Ola Carlos:
você pode postar um exemplo, muitos ajudá-los.

Hola Carlos :
puede Ud publicar un ejemplo , a muchos les serviria.

Hi Carlos:
can you post an example, many would help them.
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`.HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. : +54901169026142
Telegram Name : DaNiElMaXiMiLiAnO

Carlos Britos
Posts: 220
Joined: Sat Aug 02, 2008 5:03 pm

Re: Error in modifying the color of the main menu

Post by Carlos Britos » Sat Apr 28, 2012 4:51 pm

Pablo César wrote:Carlos Britos, when I compile in HMG your code C is presenting errors:

undefined reference to ObjGetNL and ObjGetObject

Probably functions are missing...
Hi.
Sorry, my fault, the above code is part of a class.
The below code compile ok with hmgee and I think is the same for hmg.

Code: Select all

#include "minigui.ch"

Function main()

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 400 ;
		HEIGHT 200 ;
		TITLE 'Menu Test' ;
		MAIN

		DEFINE MAIN MENU

			POPUP 'File'

				ITEM 'Open' 		ACTION MsgInfo ('File:Open') IMAGE 'Check.Bmp'
				ITEM 'Save' 		ACTION MsgInfo ('File:Save') IMAGE 'Free.Bmp' DISABLED
				ITEM 'Print' 		ACTION MsgInfo ('File:Print') IMAGE 'Info.Bmp'
				ITEM 'Save As...' 	ACTION MsgInfo ('File:Save As') DISABLED
				ITEM 'HMG Version' 	ACTION MsgInfo (MiniGuiVersion())
				SEPARATOR
				ITEM 'Exit' 		ACTION Form_1.Release IMAGE 'Exit.Bmp'

			END POPUP

			POPUP 'Test'

				ITEM 'Item 1' 		ACTION MsgInfo ('Item 1')  name xxx
				ITEM 'Item 2' 		ACTION MsgInfo ('Item 2')

				POPUP 'Item 3' name test
					ITEM 'Item 3.1' 		ACTION MsgInfo ('Item 3.1') DISABLED
					ITEM 'Item 3.2' 		ACTION MsgInfo ('Item 3.2')

					POPUP 'Item 3.3'
						ITEM 'Item 3.3.1' 		ACTION MsgInfo ('Item 3.3.1')
						ITEM 'Item 3.3.2' 		ACTION MsgInfo ('Item 3.3.2')

						POPUP 'Item 3.3.3'

							ITEM 'Item 3.3.3.1' 		ACTION MsgInfo ('Item 3.3.3.1')
							ITEM 'Item 3.3.3.2' 		ACTION MsgInfo ('Item 3.3.3.2')
							ITEM 'Item 3.3.3.3' 		ACTION MsgInfo ('Item 3.3.3.3') DISABLED
							ITEM 'Item 3.3.3.4' 		ACTION MsgInfo ('Item 3.3.3.4') DISABLED
							ITEM 'Item 3.3.3.5' 		ACTION MsgInfo ('Item 3.3.3.5')
							ITEM 'Item 3.3.3.6' 		ACTION MsgInfo ('Item 3.3.3.6')

						END POPUP

						ITEM 'Item 3.3.4' 		ACTION MsgInfo ('Item 3.3.4') DISABLED

					END POPUP

				END POPUP

				ITEM 'Item 4' 		ACTION MsgInfo ('Item 4') DISABLED

			END POPUP

			POPUP 'Help'

				ITEM 'About' 		ACTION MsgInfo ('Help:ABout')

			END POPUP

		END MENU

		DEFINE CONTEXT MENU
			ITEM 'Item 1' 		ACTION MsgInfo ('Item 1')
			ITEM 'Item 2' 		ACTION MsgInfo ('Item 2') DISABLED
			SEPARATOR
			ITEM 'Item 3' 		ACTION MsgInfo ('Item 3')
		END MENU

		ON KEY ESCAPE ACTION ThisWindow.Release

	END WINDOW


  MENU_BACKCOLOR( GetFormHandle("Form_1"),{255,0,0}  )
  MENU_BACKCOLOR( GetFormHandle("Form_1"), 1 ,{0,255,255}  )
  MENU_BACKCOLOR( GetFormHandle("Form_1"), 2 ,{255,255,0}  )
  MENU_BACKCOLOR( GetFormHandle("Form_1"), 3 ,{255,0,255}  )

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return Nil

/*-----------------------------------------------------------------*/

#pragma BEGINDUMP

#include <windows.h>
#include <commctrl.h>
#include "hbapi.h"
#include "hbapiitm.h"

HB_FUNC ( MENU_BACKCOLOR )
{
   MENUINFO   iMenuInfo ;
   LONG       nColor ;
   HMENU      hMenu = GetMenu((HWND) hb_parnl(1)); ;

   // si son 2 params el segundo es el color
   // two params. 1 = handle form, 2 = array color
   if( HB_ISNIL(3) )
   {
      nColor = (LONG) RGB(hb_parvni(2,1),hb_parvni(2,2),hb_parvni(2,3)) ;
   }
   // si son 3 params el segundo es el numero del submenu, el tercero es el color
   // three params. 1 = handle form, 2 = index position of subMenu, 3 = array color
   else
   {
      hMenu = GetSubMenu( hMenu, hb_parni(2) -1 );
      nColor = (LONG) RGB(hb_parvni(3,1),hb_parvni(3,2),hb_parvni(3,3)) ;
   }

   GetMenuInfo( (HMENU) hMenu, &iMenuInfo );
   iMenuInfo.cbSize   = sizeof(MENUINFO);
   iMenuInfo.fMask    = MIM_BACKGROUND | MIM_APPLYTOSUBMENUS;
   iMenuInfo.hbrBack  = CreateSolidBrush( nColor );
   SetMenuInfo( hMenu, &iMenuInfo );
   DrawMenuBar((HWND) hb_parnl(1));
}


#pragma ENDDUMP

/*-----------------------------------------------------------------*/
Attachments
menu2.JPG
menu2.JPG (14.18 KiB) Viewed 4200 times
menu1.JPG
menu1.JPG (11.86 KiB) Viewed 4200 times
Regards/Saludos, Carlos (bcd12a)

User avatar
danielmaximiliano
Posts: 2081
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Error in modifying the color of the main menu

Post by danielmaximiliano » Sat Apr 28, 2012 4:54 pm

Excelente Carlos:
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`.HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. : +54901169026142
Telegram Name : DaNiElMaXiMiLiAnO

Carlos Britos
Posts: 220
Joined: Sat Aug 02, 2008 5:03 pm

Re: Error in modifying the color of the main menu

Post by Carlos Britos » Sat Apr 28, 2012 5:18 pm

danielmaximiliano wrote:Excelente Carlos:
falta la definicion dentro del BEGIN SEQUENCE
de :

#define MIM_BACKGROUND 0x00000002
#define MIM_APPLYTOSUBMENUS 0x80000000

y para compilar con hmg habria que sacar DISABLED del menu.
No puedo en este momento compilarlo con hmg como para probarlo.
----

Is missing the pragam BEGIN SEQUENCE:
the definition of:
#define MIM_BACKGROUND 0x00000002
#define MIM_APPLYTOSUBMENUS 0x80000000

To compile with HMG maybe you have to remove the comand DISABLED from menus
I can't compile with hgm in this moment, I don´t have the zip libs. :(
Regards/Saludos, Carlos (bcd12a)

User avatar
jairpinho
Posts: 230
Joined: Mon Jul 18, 2011 5:36 pm
Location: Rio Grande do Sul - Brasil
Contact:

Re: Error in modifying the color of the main menu

Post by jairpinho » Sun Apr 29, 2012 1:50 am

Muito obrigado Carlos Britos e Daniel me ajudaram muito consegui resolver atraves do exemplo do Carlos Britos
segue resultado

Thank you Carlos and Daniel Britos helped me manage to solve through the example of Carlos Britos
result follows

menu color 1

Code: Select all

#include <hmg.ch>

//#include "minigui.ch"

Function Main
        Load Window Form_1
        Form_1.Center
        Form_1.Activate
        
Return Nil


Function teste()
cTeste := REPLICATE("0",100)      

cTeste := STUFF(cTeste,3,1,"1")
msginfo(cTeste)

Return


Func CMenu()
 Local hMenu    := _GetMenuId(GetFormHandle("Form_1"))
 Local aColor   := {255,255,0}
 Local lSubMenu := .t.
 _ColorMenu(GetFormHandle("Form_1"),aColor, lSubMenu,, "BLUSTONE.BMP")
Return Nil

Func ColorMenu()
 Local hMenu    := _GetMenuId(GetFormHandle("Form_1"))
 Local lSubMenu := .t.
 Local aColor   :=GetColor()
 Local aBr := GetControlHandle("ImgTest","Form_1")
 If aColor[1] = Nil
   MsgInfo(" No Selecciono Color ")
 Else
   _ColorMenu(GetFormHandle("Form_1"),aColor, lSubMenu, )
 EndIf
Return Nil

Func ImageMenu()
 Local hMenu    := _GetMenuId(GetFormHandle("Form_1"))
 Local lSubMenu := .t.
 Local aImage   := GetFile(	{ {'BITMAP','*.Bmp'} } , 'Abrir Archivos Bitmap' ,  , .f. , .t. )
 Local aBr := GetControlHandle("ImgTest","Form_1")
 If Empty(aImage)
   MsgInfo(" No Selecciono Imagen ")
 Else
   _ColorMenu(GetFormHandle("Form_1"),, lSubMenu, aImage)
  SetProperty("Form_1","ImgTest","picture",aImage)
 EndIf
Return Nil


#pragma BEGINDUMP
#include <windows.h>
#include <commctrl.h>
#include "hbapi.h"
#include "hbvm.h"
#include "hbstack.h"
#include "hbapiitm.h"
#include "winreg.h"
#include "tchar.h"

#define MIM_BACKGROUND              0x00000002
#define MIM_APPLYTOSUBMENUS         0x80000000


HB_FUNC( _GETMENUID)
{
 hb_retnl((LONG)GetMenu((HWND)hb_parnl(1)));
}

HB_FUNC ( _COLORMENU )
{
HMENU      iMenu;
MENUINFO   iMenuInfo ;

//nRed   = hb_parvni(2,1);
//nGreen = hb_parvni(2,2);
//nBlue  = hb_parvni(2,3);

BOOL  lSubMenu = hb_parl(3);
HWND  himage ;

himage = (HWND)LoadImage(0,hb_parc(4),IMAGE_BITMAP ,0,0,LR_LOADFROMFILE | LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT );

if (himage==NULL)
  {
	himage = (HWND)LoadImage(GetModuleHandle(NULL),hb_parc(4),IMAGE_BITMAP ,0,0, LR_LOADMAP3DCOLORS	| LR_LOADTRANSPARENT );
  }

iMenu              = GetMenu((HWND) hb_parnl(1));
GetMenuInfo(iMenu, &iMenuInfo);
iMenuInfo.cbSize   = sizeof(MENUINFO);

if (lSubMenu)
 {
   iMenuInfo.fMask    = MIM_BACKGROUND | MIM_APPLYTOSUBMENUS ;
 }
else
 {
   iMenuInfo.fMask    = MIM_BACKGROUND;
 }

if (himage==NULL)
 {
    //iMenuInfo.hbrBack = CreateSolidBrush(RGB(nRed, nGreen, nBlue));
	iMenuInfo.hbrBack = CreateSolidBrush(RGB(hb_parvni(2,1),hb_parvni(2,2),hb_parvni(2,3)));
 }
else
 {
    iMenuInfo.hbrBack = CreatePatternBrush(himage);
 }

SetMenuInfo(iMenu, &iMenuInfo);
DrawMenuBar((HWND) hb_parnl(1));

}


HB_FUNC ( _COLORSUBMENU )
{
HMENU      iMenu;
MENUINFO   iMenuInfo ;
iMenu              = GetMenu((HWND) hb_parnl(1));
GetMenuInfo(iMenu, &iMenuInfo);
iMenuInfo.cbSize   = sizeof(MENUINFO);
iMenuInfo.fMask    = MIM_BACKGROUND | MIM_APPLYTOSUBMENUS;
iMenuInfo.hbrBack  = CreateSolidBrush(RGB(hb_parvni(2,1),hb_parvni(2,2),hb_parvni(2,3)));
SetMenuInfo(iMenu, &iMenuInfo);
DrawMenuBar((HWND) hb_parnl(1));
}

#pragma ENDDUMP



Menu color 2

Code: Select all

#include <hmg.ch>

//#include "minigui.ch"

Function Main
        Load Window Form_1
			MENU_BACKCOLOR( GetFormHandle("Form_1"),{255,0,0}  )
			MENU_BACKCOLOR( GetFormHandle("Form_1"), 1 ,{0,255,255}  )
			//MENU_BACKCOLOR( GetFormHandle("Form_1"), 2 ,{255,255,0}  )
			//MENU_BACKCOLOR( GetFormHandle("Form_1"), 3 ,{255,0,255}  )

		
        Form_1.Center
        Form_1.Activate
        
Return Nil




   CENTER WINDOW Form_1

   ACTIVATE WINDOW Form_1

Return Nil

#pragma BEGINDUMP

#include <windows.h>
#include <commctrl.h>
#include "hbapi.h"
#include "hbapiitm.h"

#define MIM_BACKGROUND              0x00000002
#define MIM_APPLYTOSUBMENUS         0x80000000

HB_FUNC ( MENU_BACKCOLOR )
{
   MENUINFO   iMenuInfo ;
   LONG       nColor ;
   HMENU      hMenu = GetMenu((HWND) hb_parnl(1)); ;

   // si son 2 params el segundo es el color
   // two params. 1 = handle form, 2 = array color
   if( HB_ISNIL(3) )
   {
      nColor = (LONG) RGB(hb_parvni(2,1),hb_parvni(2,2),hb_parvni(2,3)) ;
   }
   // si son 3 params el segundo es el numero del submenu, el tercero es el color
   // three params. 1 = handle form, 2 = index position of subMenu, 3 = array color
   else
   {
      hMenu = GetSubMenu( hMenu, hb_parni(2) -1 );
      nColor = (LONG) RGB(hb_parvni(3,1),hb_parvni(3,2),hb_parvni(3,3)) ;
   }

   GetMenuInfo( (HMENU) hMenu, &iMenuInfo );
   iMenuInfo.cbSize   = sizeof(MENUINFO);
   iMenuInfo.fMask    = MIM_BACKGROUND | MIM_APPLYTOSUBMENUS;
   iMenuInfo.hbrBack  = CreateSolidBrush( nColor );
   SetMenuInfo( hMenu, &iMenuInfo );
   DrawMenuBar((HWND) hb_parnl(1));
}


#pragma ENDDUMP


Attachments
menucolor_2.png
menucolor_2.png (9.96 KiB) Viewed 4192 times
menuimagem.png
menuimagem.png (20.79 KiB) Viewed 4192 times
menucolor.png
menucolor.png (19.09 KiB) Viewed 4192 times
Jair Pinho
HMG ALTA REVOLUÇÃO xBASE
HMG xBASE REVOLUTION HIGH
http://www.hmgforum.com.br

User avatar
Rathinagiri
Posts: 5225
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: Error in modifying the color of the main menu

Post by Rathinagiri » Mon Apr 30, 2012 3:36 am

Wow! Very nice implementation.

Can we change the color of an individual menu item alone? (Like 'red' color for File->Delete)
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.

Post Reply