It is currently Thu Jan 23, 2020 9:03 am

All times are UTC + 1 hour




Post new topic Reply to topic  [ 6 posts ] 
Author Message
 Post subject: Re: Menu coloring using SetMenuInfo_ () not working with 64
PostPosted: Thu Dec 04, 2014 12:30 am 
Offline
Addict
Addict
User avatar

Joined: Wed Aug 31, 2005 11:09 pm
Posts: 3695
Location: Italy
The menu bar or the menu items ?

The first code does nothing here, using PB 5.31 x86 on Win7 x64.

On the other hand adding #MIM_APPLYTOSUBMENUS

Code:
  \fMask = #MIM_BACKGROUND | #MIM_APPLYTOSUBMENUS


changes the background color of the menu items to yellow.

Still doesn't work on x64 though.

I don't think it's a terrific idea to change the bg color of a menu, not knowing what the foreground color is.

Well, I don't think it's a nice idea to change any color (OS themes are there for a good reason and you can piss off the user doing so), *unless* you owner draw all (maybe skinning your program entirely).


To make it work on x86 and x64 I've changed it as follow:

Code:
#MIM_BACKGROUND = 2
#MIM_APPLYTOSUBMENUS =  $80000000 ; added

Structure myMENUINFO Align #PB_Structure_AlignC ; added
  cbSize.l
  fMask.l
  dwStyle.l
  cyMax.l
  hbrBack.i ; changed to HBRUSH, handle size -> pointer size
  dwContextHelpId.l
  *dwMenuData ; changed to ULONG_PTR -> http://msdn.microsoft.com/en-us/library/windows/desktop/aa384255%28v=vs.85%29.aspx
EndStructure

Debug SizeOf(myMENUINFO)

hMenuBrushBG = CreateSolidBrush_(RGB(255,255,0))

With mi.myMENUINFO
  \cbSize = SizeOf(myMENUINFO)
  \fMask = #MIM_BACKGROUND | #MIM_APPLYTOSUBMENUS ; added
  \hbrBack = hMenuBrushBG
EndWith

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateMenu(0, WindowID(0))
    MenuTitle("Menü 1")
      MenuItem(1,"Item 1")
    MenuTitle("Menü 2")
      MenuItem(2,"Item 2")
  EndIf
 
  Debug SetMenuInfo_(MenuID(0), mi)
  DrawMenuBar_(WindowID(0))
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_CloseWindow
  DeleteObject_(hMenuBrushBG)
  Quit=1
EndIf
Until Quit=1
EndIf


references:

MENUINFO
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Windows data types
http://msdn.microsoft.com/en-us/library ... 85%29.aspx

_________________
[ My little PureBasic review ]


Top
 Profile  
Reply with quote  
 Post subject: Re: Menu coloring using SetMenuInfo_ () not working with 64
PostPosted: Thu Dec 04, 2014 12:57 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Thu Jan 27, 2011 12:00 pm
Posts: 225
Location: Erzgebirge-DE
Luis' code works absolutely fine. Thanks for doing some research, luis!

And bbanelli thank you for the try and for giving me a link to a fine RASHAD code!

_________________
Thanks for all kinds of support, for reading my posts and for asking: "how can i help this guy?"


Top
 Profile  
Reply with quote  
 Post subject: Re: Menu coloring using SetMenuInfo_ () not working with 64
PostPosted: Fri Dec 05, 2014 2:28 am 
Offline
Enthusiast
Enthusiast

Joined: Sun Nov 06, 2005 6:07 am
Posts: 162
Location: Perth Western Australia
Hi guys

How could this be done with popup menus ?

Leo

_________________
Regards
Leo


Top
 Profile  
Reply with quote  
 Post subject: Re: Menu coloring using SetMenuInfo_ () not working with 64
PostPosted: Fri Dec 05, 2014 10:43 am 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Sat May 05, 2007 5:31 pm
Posts: 660
Location: Linz, Austria
Quote:
How could this be done with popup menus ?
same same but (a little bit) different ;)
Code:
#MIM_BACKGROUND = 2
#MIM_APPLYTOSUBMENUS =  $80000000 ; added

Structure myMENUINFO Align #PB_Structure_AlignC ; added
  cbSize.l
  fMask.l
  dwStyle.l
  cyMax.l
  hbrBack.i ; changed to HBRUSH, handle size -> pointer size
  dwContextHelpId.l
  *dwMenuData ; changed to ULONG_PTR -> http://msdn.microsoft.com/en-us/library/windows/desktop/aa384255%28v=vs.85%29.aspx
EndStructure

Debug SizeOf(myMENUINFO)

hMenuBrushBG = CreateSolidBrush_(RGB(255,255,0))

With mi.myMENUINFO
  \cbSize = SizeOf(myMENUINFO)
  \fMask = #MIM_BACKGROUND | #MIM_APPLYTOSUBMENUS ; added
  \hbrBack = hMenuBrushBG
EndWith

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreatePopupMenu(0) ;changed
    MenuTitle("Menü 1")
    MenuItem(1,"Item 1")
    MenuTitle("Menü 2")
    MenuItem(2,"Item 2")
  EndIf
 
  Debug SetMenuInfo_(MenuID(0), mi)
  DrawMenuBar_(WindowID(0))
  Repeat
    EventID=WaitWindowEvent()
   
    If EventID = #PB_Event_RightClick ;changed
      DisplayPopupMenu(0, WindowID(0))
    EndIf
   
    If EventID=#PB_Event_CloseWindow
      DeleteObject_(hMenuBrushBG)
      Quit=1
    EndIf
  Until Quit=1
EndIf


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  

 


Powered by phpBB © 2008 phpBB Group
subSilver+ theme by Canver Software, sponsor Sanal Modifiye