Toolbar "Highlight-Effekt" deaktivieren
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Hah! Jetzt hab ich "ihn" bei den Eiern! 
Guckst du hier:
Bin mit der #NM_CUSTOMDRAW Nachricht und deren Drawing Stages bzw. Rückgabewerten noch nicht ganz so firm man möge mir also die ersten Anläufe verzeihen. 

Guckst du hier:
Code: Alles auswählen
#TBCDRF_NOBACKGROUND = $00400000
OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateToolBar(0,WindowID(0))
SetWindowLong_(ToolBarID(0),#GWL_STYLE,#WS_CHILD | #WS_VISIBLE | #CCS_TOP | #TBSTYLE_CUSTOMERASE)
For i=0 To 10 : ToolBarStandardButton(100 + i,i) : Next
Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
Select uMsg
Case #WM_NOTIFY
*nmh.NMHDR = lParam
If *nmh\hwndFrom = ToolBarID(0)
Select *nmh\code
Case #NM_CUSTOMDRAW
*nmtbc.NMTBCUSTOMDRAW = lParam
If *nmtbc\nmcd\dwDrawStage = #CDDS_ITEMPREPAINT
ProcedureReturn #TBCDRF_NOBACKGROUND
EndIf
ProcedureReturn #CDRF_NOTIFYITEMDRAW
EndSelect
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
SetWindowCallback(@WindowCallback())
While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Windows 10 Pro, 64-Bit / Outtakes | Derek
Aber trotzdem vielen Dank! Dann schreibe ich das ganze nochmal um, denn bei meinem Umweg besteht das Problem, dass auf dem Rebar-Control transparente Bilder(Über ImageGadget realisiert..) nicht richtig dargestellt werden. Da erkennt man dann leider immernoch die Stelle, die eigentlich transparent sein sollte(Hat dann halt die Hintergrundfarbe vom Fenster). Weiß einer wie man das lösen könnte?
eine Lib ist immer problematisch (in Bezug auf Inkompatibilitäten mitX0r hat geschrieben:Hätte jemand Interesse an einer solchen Lib?
zukünftigen PB-Version). Ein Include wäre besser.
Aber ehrlich gesagt kann ich mir noch nicht genau vorstellen, was Dein
Code macht, bzw, wie die Toolbar dann in Action aussieht. Kannst Du eine
kleine Demo-Exe bereitstellen, mit der man das Teil dann ausprobieren
kann?
Grüße ... Kiffi
a²+b²=mc²
So, hab mich ebend kurz(da ich völlig übermüdet bin) mit ownerdrawing beschäftigt( http://doc.trecom.tomsk.su/HTML/InetSDK ... et0175.htm )
Raußgekommen ist das hier:
Der Huntergrund des 2. Toolbaritems wird blau unterlegt, somit ist das erstellen einer Office-Toolbar kinderleicht.
Hoffe jemand kanns gebrauchen.
Raußgekommen ist das hier:
Code: Alles auswählen
Global bbrush=CreateSolidBrush_(#Blue)
#TBCDRF_NOBACKGROUND = $00400000
Procedure WindowCallback(hwnd,uMsg,wParam,lParam)
Select uMsg
Case #WM_NOTIFY
*nmh.NMHDR = lParam
If *nmh\hwndFrom = toolbar_id
Select *nmh\code
Case #NM_CUSTOMDRAW
*nmtbc.NMTBCUSTOMDRAW = lParam
If *nmtbc\nmcd\dwDrawStage = #CDDS_ITEMPREPAINT
If *nmtbc\nmcd\dwItemSpec=1 And *nmtbc\nmcd\uItemState=#CDIS_HOT
SetBkMode_(*nmtbc\nmcd\hdc,#TRANSPARENT)
FillRect_(*nmtbc\nmcd\hdc, *nmtbc\nmcd\rc, bbrush)
EndIf
ProcedureReturn #TBCDRF_NOBACKGROUND
EndIf
ProcedureReturn #CDRF_NOTIFYITEMDRAW
EndSelect
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Hoffe jemand kanns gebrauchen.
