FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Color de MENU POPUP
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Color de MENU POPUP
Posted: Tue Mar 10, 2015 01:22 PM

Hola gente,

¿Hay forma de cambiar los colores de texto y fondo de los MENUITEMS de un MENU POPUP?
He estado buscando en el código pero no hay paints, solo un setup especial en los casos de ::l2007 o ::l2010.

Tal vez alguien ya escribió algo en alguna clase alternativa... no se, cualquier pista será muy bien recibida.

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Color de MENU POPUP
Posted: Tue Mar 10, 2015 02:02 PM
Talvez:

Code (fw): Select all Collapse
    DEFINE BRUSH oBrush    RESOURCE "LOGO2"

    ACTIVATE WINDOW oWnd MAXIMIZED                                    ;
             ON INIT ( SetMenuBG( oWnd,, oBrush ) )


*******************************************************************************
*
* Function SetMenuBG(oWnd, nClrBack, oBrush)
*
*   ENGLISH : Changes menus backgrounds or paint them with a brush
*   ESPANHOL: Cambia el color de fondo de los menús o les agrega un brush
*   
*  TESTED / PROBADO: FWH23c, xHarbour0.81
*
*  César E. Lozada (<!-- e --><a href="mailto:cesarlozada@hotmail.com">cesarlozada@hotmail.com</a><!-- e -->)
*  Los Teques, Venezuela    2003-08-08
*
*******************************************************************************

#Define MIM_APPLYTOSUBMENUS 2147483648 //&H80000000
#Define MIM_BACKGROUND      2          //&H2

*==============================================================================

#Include "Struct.ch"

Function SetMenuBG( oWnd, nClrBack, oBrush )

    Local nRet := 0
    Local hMenu
    Local oMenuInfo, cBuffer

    STRUCT oMenuInfo
        MEMBER nSize AS LONG
        MEMBER nMask AS LONG
        MEMBER nStyle AS LONG
        MEMBER nMax AS LONG
        MEMBER nClrBack AS LONG
        MEMBER nHelpID AS LONG
        MEMBER nMenuData AS LONG
    ENDSTRUCT

    IF ( hMenu := GetMenu( oWnd:hWnd ) ) <> 0

        cBuffer           := oMenuInfo:cBuffer

        GetMenuInfo( hMenu, @cBuffer )
        oMenuInfo:cBuffer := cBuffer

        oMenuInfo:nSize   := Len( oMenuInfo:cBuffer )
        oMenuInfo:nMask   := nOr( MIM_APPLYTOSUBMENUS, MIM_BACKGROUND )

        IF oBrush <> Nil
            oMenuInfo:nClrBack := oBrush:hBrush
         ELSE
            oMenuInfo:nClrBack := CreateSolidBrush( nClrBack )
        ENDIF

        nRet := SetMenuInfo( hMenu, oMenuInfo:cBuffer )

        DrawMenuBar( oWnd:hWnd )

    ENDIF

Return nRet

*==============================================================================

DLL32 STATIC FUNCTION GetMenu ;
      ( hwnd AS LONG )        ;
        AS LONG PASCAL        ;
        LIB "USER32"

DLL32 Static Function GetMenuInfo ;
      ( hMenu AS LONG,            ;
        cMenuInfo AS LPSTR)       ;
        AS LONG PASCAL            ;
        FROM "GetMenuInfo" LIB "USER32"

DLL32 Static Function SetMenuInfo ;
      ( hMenu AS LONG,            ;
        cMenuInfo AS LPSTR)       ;
        AS LONG PASCAL            ;
        FROM "SetMenuInfo" LIB "USER32"

//------Fim da Function SetMenuBG(oWnd, nClrBack, oBrush)------------------


Saludos.


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: Color de MENU POPUP
Posted: Tue Mar 10, 2015 02:55 PM

Karinha,

Vamos a ponerlo a prueba. No uso xHarbour, creo que lo de las STRUCTs no va a funcionar pero le pondremos algo de C para salir del paso.

¡Muchas gracias!

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"

Continue the discussion