PureBoard
http://forums.purebasic.com/german/

MenuBar Hintergrundfarbe - Hat sich erledigt
http://forums.purebasic.com/german/viewtopic.php?f=16&t=31671
Seite 1 von 1

Autor:  Michael(362) [ 29.09.2019 11:40 ]
Betreff des Beitrags:  MenuBar Hintergrundfarbe - Hat sich erledigt

Moin,
ich versuche mit folgendem Code die Hintergrundfarbe einer Menubar zu ändern:

Code:
Structure MENUINFO
  cbSize.l
  fMask.l
  dwStyle.l
  cyMax.l
  hbrBack.i
  dwContextHelpID.l
  dwMenuData.l
EndStructure
#MIM_BACKGROUND = $2
#MIM_APPLYTOSUBMENUS = $80000000
Define MainMenu.l
 
Procedure SetMenuBackgroundcolor(Menu.l)
  Define hBrush1.l, mi.MENUINFO
  hBrush1 = CreateSolidBrush_(RGB(255,0,0))
  With mi
    mi\cbSize = SizeOf(MENUINFO)
    mi\fMask = #MIM_BACKGROUND|#MIM_APPLYTOSUBMENUS
    mi\hbrBack = hBrush1                           
  EndWith
  SetMenuInfo_(Menu, @mi)
  DrawMenuBar_(WindowID(0))
EndProcedure
 
 
OpenWindow(0, 0, 0, 500, 300, "Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
MainMenu = CreateMenu(1, WindowID(0))
  MenuTitle("Titel1")
  MenuItem(1, "Item1")
  MenuTitle("Titel2")
  MenuItem(1, "Item1")
SetMenuBackgroundcolor(MainMenu)

Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_CloseWindow
    DeleteObject_(hBrush1)
  EndIf
Until Event = #PB_Event_CloseWindow


Das funktioniert auf den ersten Blick auch. Aber wenn ein Menutitle geklickt wird bekommt er wieder seine Systemfarbe.
Gibt es die Möglichkeit auch diese Hintergrundfarbe zu ändern?

Gruß Michael

Edit:
Habe herausgefunden das Dies nur Ownerdrawn Objekten funktioniert indem man das Menü selbst zeichnet.
Vielen Dank an die Microsoft Programmierer wegen der zickigen Controls.

Autor:  Shardik [ 29.09.2019 22:33 ]
Betreff des Beitrags:  Re: MenuBar Hintergrundfarbe - Hat sich erledigt

Michael(362) hat geschrieben:
Edit:
Habe herausgefunden das Dies nur Ownerdrawn Objekten funktioniert indem man das Menü selbst zeichnet.
Vielen Dank an die Microsoft Programmierer wegen der zickigen Controls.

Es ist nicht nötig mit Ownerdraw zu arbeiten. Dein obiges Beispiel funktioniert problemlos mit Windows 7 SP1 x64 und PB 5.71 x86, aber nicht mit PB 5.71 x64. Um sowohl mit 32 als auch mit 64 Bit funktionsfähig zu sein, musst Du die lediglich die Struktur von MENUINFO anpassen, wie es luis im englischen Forum gezeigt hat:
Code:
Structure MENUINFO Align #PB_Structure_AlignC
  cbSize.l
  fMask.l
  dwStyle.l
  cyMax.l
  hbrBack.i
  dwContextHelpID.l
  dwMenuData.i
EndStructure

Autor:  Michael(362) [ 30.09.2019 11:09 ]
Betreff des Beitrags:  Re: MenuBar Hintergrundfarbe - Hat sich erledigt

Moin Shardik,

ich habe Version 5.71 installiert und das Beispiel von luis ausprobiert.
Aber das Ergebnis ist das Gleiche.
Vielleicht habe ich das Problem auch falsch beschrieben. Wenn ich z.B. den Code von luis starte wird das Menü mit einem gelben Hintergrund angezeigt. Wenn ich dann mit der Maus einen Hauptmenüpunkt anklicke werden die Untermenüs auch mit einem gelben Hintergrund angezeigt. Aber der Hintergrund von dem angeklickten Hauptmenüpunkt wird dann mit einer grauen Hintergrundfarne angezeigt.

Trotzdem vielen Dank für Deine Antwort
Gruß Michael

Edit:
Habe das Beispiel von luis auf Windows 10 Pro 64-Bit, Purebasic V5.71 ausprobiert.
Hier wird der Hintergrund der Hauptmenüpunkte gar nicht eingefärbt. Nur der Hintergrund der Untermenüpunkte wird gelb eingefärbt.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/