Aktuelle Zeit: 05.12.2019 18:44

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: MenuBar Hintergrundfarbe - Hat sich erledigt
BeitragVerfasst: 29.09.2019 11:40 
Offline

Registriert: 28.07.2019 12:51
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.

_________________
PureBasic 5.70 LTS (Windows - x86)
Windows 7 x86 (noch)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MenuBar Hintergrundfarbe - Hat sich erledigt
BeitragVerfasst: 29.09.2019 22:33 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MenuBar Hintergrundfarbe - Hat sich erledigt
BeitragVerfasst: 30.09.2019 11:09 
Offline

Registriert: 28.07.2019 12:51
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.

_________________
PureBasic 5.70 LTS (Windows - x86)
Windows 7 x86 (noch)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye