Seite 1 von 2

ToolBar Hintergrundfarbe

Verfasst: 17.06.2011 04:18
von Lambda
wie bekomme ich eine ToolBar eingefärbt so dass
sie auch noch funktioniert?

wenn ich sie einem MDI zuweiße kann ich die farbe ohne
probleme ändern, nur werden die IDs der Buttons durch EventMenu() nichtmehr
zurückgegeben.

kennt jemand eine Lösung?

Re: ToolBar Hintergrundfarbe

Verfasst: 17.06.2011 07:28
von RSBasic

Re: ToolBar Hintergrundfarbe

Verfasst: 17.06.2011 13:55
von Lambda
ah danke :allright: . ist schon eine bessere Lösung als durch das MDI.. da eine
ToolBar an sich transparent ist... gibt es auch eine Möglichkeit ein Image
als Hintergrund festzulegen?

Re: ToolBar Hintergrundfarbe

Verfasst: 17.06.2011 19:45
von RSBasic
Ich hab zwar den folgenden Code noch nicht in Verbindung einer ToolBar ausprobiert, aber vielleicht klappt es: http://www.rsbasic.de/aktualisierung/wi ... 3%BCgen.pb

Re: ToolBar Hintergrundfarbe

Verfasst: 04.05.2012 19:55
von Frabbing
Zur Information: Es klappt nicht. :D

Re: ToolBar Hintergrundfarbe

Verfasst: 04.05.2012 20:27
von RSBasic
Doch funktioniert:

Code: Alles auswählen

EnableExplicit

Define EventID
Define bgimage
Define hBrush
Define hwndTB

bgimage = LoadImage(#PB_Any,"C:\Windows\System32\oobe\background.bmp");Beispiel-Pfad überprüfen und ggf. anpassen

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  
  If OpenWindow(1,50,50,200,100,"",#WS_CHILD,WindowID(0))
    hBrush = CreatePatternBrush_(ImageID(bgimage))
    SetClassLong_(WindowID(1), #GCL_HBRBACKGROUND, hBrush)
    InvalidateRect_(WindowID(1), #Null, #True)
    
    hwndTB = CreateToolBar(0,WindowID(1))
    ToolBarStandardButton(0,#PB_ToolBarIcon_New)
    ToolBarStandardButton(1,#PB_ToolBarIcon_Open)
    ToolBarStandardButton(2,#PB_ToolBarIcon_Save)
    
    SendMessage_(hwndTB,#TB_SETSTYLE,0,SendMessage_(hwndTB,#TB_GETSTYLE,0,0) | #CCS_NODIVIDER)
  EndIf
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Re: ToolBar Hintergrundfarbe

Verfasst: 11.05.2012 14:15
von Frabbing
Funktioniert aber nicht richtig. Wenn man mit dem Mauszeiger einfach von links nach rechts über die Toolbarbuttons fährt, entsteht dort ein Mosaikeffekt des Hintergrunds. Bei großen, einfarbigen Flächen in der Hintergrundgrafik tolerierbar, aber nicht bei detailreichen Grafiken. Sieht dann gleich unprofessionell aus, also besser sein lassen oder gut darauf Acht geben.

Re: ToolBar Hintergrundfarbe

Verfasst: 11.05.2012 15:16
von RSBasic
Oh, das ist mir nicht aufgefallen.
Besser so?

Code: Alles auswählen

EnableExplicit

Define EventID
Define bgimage
Define hBrush
Global hwndTB

UsePNGImageDecoder()

bgimage = LoadImage(#PB_Any,"C:\[...]\Testheader.png");Beispiel-Pfad überprüfen und ggf. anpassen

Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
  Protected *notify.NMTOOLBAR
  
  Select uMsg
    Case #WM_NOTIFY
      *notify = lparam
      
      If *notify\hdr\code = -713
        InvalidateRect_(hwndTB,0,#True)
      EndIf
      
  EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 
  If OpenWindow(1,50,50,200,100,"",#WS_CHILD,WindowID(0))
    hBrush = CreatePatternBrush_(ImageID(bgimage))
    SetClassLong_(WindowID(1), #GCL_HBRBACKGROUND, hBrush)
    InvalidateRect_(WindowID(1), #Null, #True)
   
    hwndTB = CreateToolBar(0,WindowID(1))
    ToolBarStandardButton(0,#PB_ToolBarIcon_New)
    ToolBarStandardButton(1,#PB_ToolBarIcon_Open)
    ToolBarStandardButton(2,#PB_ToolBarIcon_Save)
   
    SendMessage_(hwndTB,#TB_SETSTYLE,0,SendMessage_(hwndTB,#TB_GETSTYLE,0,0) | #CCS_NODIVIDER)
    
    SetWindowCallback(@WindowCallback())
    
  EndIf
 
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Re: ToolBar Hintergrundfarbe

Verfasst: 11.05.2012 22:03
von Frabbing
Jetzt ist es 'ne saubere Sache, mit der Notify zusätzlich geht's perfekt. :allright:

#TBN_HOTITEMCHANGE = $FFFFFD37

Re: ToolBar Hintergrundfarbe

Verfasst: 11.05.2012 22:12
von RSBasic
Danke fürs Heraussuchen der API-Konstante. :allright: