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

. 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.

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.
#TBN_HOTITEMCHANGE = $FFFFFD37
Re: ToolBar Hintergrundfarbe
Verfasst: 11.05.2012 22:12
von RSBasic
Danke fürs Heraussuchen der API-Konstante.
