Repaint (Flackern) bei Shift, ist das normal?
Verfasst: 04.08.2012 11:38
Ich wollte diesen Code ins BUG-forum schreiben,
da ich aber nicht weiß, warum es so ist, poste ich den mal hier rein.
Zuvor will ich noch sagen, das das Problem bei 4.60 nicht ist.
Bitte startet mal folgenden Code, verkleinert das Fenster so,
das der Desktop zu sehen ist und wechselt mal mit Mausklick
im leeren Desktopfeld und dann wieder im Windows auf einer der Stringgadgets.
Danach klickt mal eine der Steuerungstasten wie shift. Das gesamte Windows flackert, also
macht ein Repaint, was irgendwie stört. Wechselt man nur zwischen Desktop und Programm,
ist das nur beim ersten Mal. Danach kann man es so oft machen wie man will, dann wird nichts
neu gezeichnet. Nur wenn man danach nur die Shifttaste drückt wird "immer wieder" neu gezeichnet.
Bei der PB-Version 4.60 passiert dieser Effekt überhaupt nicht. Weiß einer warum es ab PB 4.61 so ist?
Hier erstmal der Testcode.
Gruß,
Falko
da ich aber nicht weiß, warum es so ist, poste ich den mal hier rein.
Zuvor will ich noch sagen, das das Problem bei 4.60 nicht ist.
Bitte startet mal folgenden Code, verkleinert das Fenster so,
das der Desktop zu sehen ist und wechselt mal mit Mausklick
im leeren Desktopfeld und dann wieder im Windows auf einer der Stringgadgets.
Danach klickt mal eine der Steuerungstasten wie shift. Das gesamte Windows flackert, also
macht ein Repaint, was irgendwie stört. Wechselt man nur zwischen Desktop und Programm,
ist das nur beim ersten Mal. Danach kann man es so oft machen wie man will, dann wird nichts
neu gezeichnet. Nur wenn man danach nur die Shifttaste drückt wird "immer wieder" neu gezeichnet.
Bei der PB-Version 4.60 passiert dieser Effekt überhaupt nicht. Weiß einer warum es ab PB 4.61 so ist?
Hier erstmal der Testcode.
Code: Alles auswählen
; weil ich es inzwischen so gewohnt bin, Variablendefinitionen "Ein"
EnableExplicit
Define quit.i
Define eventid.i
Define a.i
; Also folgendes passiert:
; wenn du das Fenster verläßt, z.B. in das Debuggerfenster klickts und
; dann NUR den Cursor in eines der String-Gadget legst und DANN die
; Shift-Taste drückst, dann flackert es wie die Sau unter 4.61.
; Dann rennen die repaints auch nur so durch das Debugger-Fenster
; Mit 4.60 kein Problem
; Fenster, der Gleichheit halber so wie in den Programmen bei mir üblich, zunächst Invisible
OpenWindow (0, 0, 0,100, 20,"Testfenster", #PB_Window_SizeGadget|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_Maximize|#PB_Window_Invisible)
; Hintergrundfarbe
SetWindowColor (0, RGB(100,100,100))
WindowBounds (0, 800, 600, #PB_Ignore, #PB_Ignore)
; Menu
CreateMenu (0, WindowID(0))
MenuTitle ("Datei")
; Gadget alle auf Scroll-Area
ScrollAreaGadget(0, 0, 0,WindowWidth(0), WindowHeight(0) - MenuHeight(),1580, 810, 20)
PanelGadget ( 6, 0, 0,1580,810)
AddGadgetItem ( 6, -1, "Eingaben")
; Container Zeile hinzufügen
ContainerGadget ( 7, 0, 0,500,690, #PB_Container_Flat)
StringGadget ( 1, 10, 10,200, 20,"")
StringGadget ( 2, 10, 40,200, 20,"")
StringGadget ( 3, 10, 70,200, 20,"")
StringGadget ( 4, 10,100,200, 20,"")
StringGadget ( 5, 10,130,200, 20,"")
ListIconGadget ( 8, 10,160,480,200,"blub",100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines)
AddGadgetColumn ( 8, 1,"blub", 80)
AddGadgetColumn ( 8, 2,"blub", 80)
AddGadgetColumn ( 8, 3,"blub", 80)
ListIconGadget ( 9, 10,370,480,200,"blub",100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines)
AddGadgetColumn ( 9, 1,"blub", 80)
AddGadgetColumn ( 9, 2,"blub", 80)
AddGadgetColumn ( 9, 3,"blub", 80)
For a = 0 To 100
AddGadgetItem ( 8, -1, "Zeile" + Chr(10) + RSet(Str(a), 4, "0") + Chr(10) + RSet(Str(a), 4, "0") + Chr(10) + RSet(Str(a), 4, "0"))
AddGadgetItem ( 9, -1, "Zeile" + Chr(10) + RSet(Str(a), 4, "0") + Chr(10) + RSet(Str(a), 4, "0") + Chr(10) + RSet(Str(a), 4, "0"))
Next a
CloseGadgetList()
; Container Zeile hinzufügen
ContainerGadget (10,510, 0,500,690, #PB_Container_Flat)
StringGadget (11, 10, 10,200, 20,"")
StringGadget (12, 10, 40,200, 20,"")
StringGadget (13, 10, 70,200, 20,"")
StringGadget (14, 10,100,200, 20,"")
StringGadget (15, 10,130,200, 20,"")
ListIconGadget (16, 10,160,480,200,"blub",100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines)
AddGadgetColumn (16, 1,"blub", 80)
AddGadgetColumn (16, 2,"blub", 80)
AddGadgetColumn (16, 3,"blub", 80)
ListIconGadget (17, 10,370,480,200,"blub",100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines)
AddGadgetColumn (17, 1,"blub", 80)
AddGadgetColumn (17, 2,"blub", 80)
AddGadgetColumn (17, 3,"blub", 80)
For a = 0 To 100
AddGadgetItem (16, -1, "Zeile" + Chr(10) + RSet(Str(a), 4, "0") + Chr(10) + RSet(Str(a), 4, "0") + Chr(10) + RSet(Str(a), 4, "0"))
AddGadgetItem (17, -1, "Zeile" + Chr(10) + RSet(Str(a), 4, "0") + Chr(10) + RSet(Str(a), 4, "0") + Chr(10) + RSet(Str(a), 4, "0"))
Next a
CloseGadgetList()
AddGadgetItem (6, -1, "Ausgaben")
CloseGadgetList()
CloseGadgetList ()
; anzeigen wenn alles aufgebaut ist
HideWindow (0, 0)
; Schleife
;SetWindowLongPtr_(WindowID(0), #GWL_STYLE, GetWindowLongPtr_(WindowID(0), #GWL_STYLE) | #WS_CLIPCHILDREN | #WS_CLIPSIBLINGS)
Repeat
EventID=WaitWindowEvent()
;...
Until EventID=#PB_Event_CloseWindow
; Ende
End
Falko