ich bin gerade über einen Bug gestolpert und möchte euch kurz ein Info dazu da lassen da ich doch einwenig gebraucht habe um herauszubekommen wann es genau zum Verhalten kommt und wie man es umschiffen kann.
Bug Beschreibung:
Das Event Repaint wird nicht immer aufgerufen beim klick auf den "Maximize" Button (obenrechts in der Titelleiste des Fensters) wenn das Fenster selbst gerade maximized ist. Also simpler ausgedrückt, oft gibt es kein Repaint wenn man das Fenster mximized und dann gleich wieder kleiner macht über den maximizeButton.
Das Event wird nur oft beim wieder kleiner machen nicht ausgelöst. Beim vergrößern geht es immer.
Fehler ist reproduzierbar mit folgendem CodeBeispiel (PBVersion 5.62, 5.61 - Win x86):
Code: Alles auswählen
counter = 0 ; zur Übersichtlichkeit
#__Main__ = 0
If OpenWindow(#__Main__,0,0,800,600,"#PB_Event_Repaint BUG",#PB_Window_TitleBar|#PB_Window_SystemMenu|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateMenu(0, WindowID(#__Main__))
MenuTitle("Program")
MenuItem(0,"close")
EndIf
Repeat
__event__ = WaitWindowEvent()
If __event__
Select __event__
Case #PB_Event_Repaint
counter = counter+1
Debug Str(counter)+") #PB_Event_Repaint"
Case #PB_Event_CloseWindow
CloseWindow(EventWindow()):End
EndSelect
EndIf
ForEver
EndIf
Im obigen Code tritt das Problem nicht mehr auf wenn das Menu entfernt wird.
Problem Lösung für mich:
PB_Window_SizeGadget muss gesetzt werden damit das RepaintEvent immer mittels "maximized" Button funktioniert
CodeBeispiel ohne Fehler und ohne Menu zu entfernen (PBVersion 5.62, 5.61 - Win x86):
Code: Alles auswählen
counter = 0 ; zur Übersichtlichkeit
#__Main__ = 0
If OpenWindow(#__Main__,0,0,800,600,"#PB_Event_Repaint BUG",#PB_Window_TitleBar|#PB_Window_SystemMenu|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
If CreateMenu(0, WindowID(#__Main__))
MenuTitle("Program")
MenuItem(0,"close")
EndIf
Repeat
__event__ = WaitWindowEvent()
If __event__
Select __event__
Case #PB_Event_Repaint
counter = counter+1
Debug Str(counter)+") #PB_Event_Repaint"
Case #PB_Event_CloseWindow
CloseWindow(EventWindow()):End
EndSelect
EndIf
ForEver
EndIf
(PBVersion 5.62, 5.61 - Win 10 pro x86)
Ich hoffe ich konnte das Problem ausreichend erklären ist schon ziehmlich spät