ich habe ein Panelgadget bei dem ich den aktiven Reiter farbig markieren wollte. Ich habe es schon vor langer Zeit über einen Callback mit OwnerDraw realisiert. Bis 6.01 hat das auch einwandfrei funktioniert. So wie ich es sehe ist der OwnerDraw aber nur für das Panelgadget, die Textgadget´s sollten eigentlich davon nicht beeinträchtigt werden.
Seit 6.02 (sowohl ASM als auch C-Backend) werden die TextGadget´s die sich in dem Panel befinden komplett in schwarz angezeigt. PB 6.02 64 Bit auf Windows 10.
Kann hier bitte einer von den Profis mal drüber schauen was hier seit 6.02 schief läuft.
Vielen Dank im Voraus
NicknameFJ
Code: Alles auswählen
#Window_Einstellung_Benutzer = 1
#Panel_Einstellungen_Benutzer = 1
#Text_HauptAnsicht = 2
Procedure Callback(hwnd, msg, wParam, lParam)
Protected OldProc, result, defaultBrush, Gadget, tabText$
Protected *PGdis.DrawItemstruct
OldProc = GetProp_(hWnd, "OldProc")
result = CallWindowProc_(OldProc, hwnd, msg, wParam, lParam)
Select msg
Case #WM_DRAWITEM
*PGdis.DRAWITEMSTRUCT = lParam
If *PGdis\CtlType = #ODT_TAB
defaultBrush = CreateSolidBrush_(GetSysColor_(#COLOR_3DFACE))
Gadget = GetProp_(*PGdis\hwnditem, "PB_ID")
If *PGdis\itemID = GetGadgetState(Gadget)
SetTextColor_(*PGdis\hdc, #Red)
EndIf
tabText$ = GetGadgetItemText(Gadget, *PGdis\itemID)
FillRect_(*PGdis\hdc, *PGdis\rcItem, defaultBrush)
SetBkMode_(*PGdis\hdc, #TRANSPARENT)
DrawText_(*PGdis\hdc, @tabText$, Len(tabText$), *PGdis\rcItem, #DT_CENTER | #DT_SINGLELINE | #DT_VCENTER | #DT_NOCLIP)
DeleteObject_(defaultBrush)
EndIf
EndSelect
ProcedureReturn result
EndProcedure
FensterBreite = 720
FensterHoehe = 400
If OpenWindow(#Window_Einstellung_Benutzer, 0, 0, FensterBreite,FensterHoehe, "Einstellungen",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
PanelGadget(#Panel_Einstellungen_Benutzer,0,0,FensterBreite,350)
AddGadgetItem(#Panel_Einstellungen_Benutzer,-1,"Auswertung")
TextGadget(#Text_HauptAnsicht,10,20,100,24,"Vollauswertung")
AddGadgetItem(#Panel_Einstellungen_Benutzer,-1,"Ansicht")
SetWindowLong_(GadgetID(#Panel_Einstellungen_Benutzer), #GWL_STYLE, GetWindowLong_(GadgetID(#Panel_Einstellungen_Benutzer), #GWL_STYLE) | #TCS_OWNERDRAWFIXED)
Oldproc = SetWindowLong_(GetParent_(GadgetID(#Panel_Einstellungen_Benutzer)), #GWL_WNDPROC, @Callback())
SetProp_(GetParent_(GadgetID(#Panel_Einstellungen_Benutzer)),@"OldProc",OldProc)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf