#PB_Event_Repaint MenuBug

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
hyrocles
Beiträge: 1
Registriert: 12.07.2006 13:30

#PB_Event_Repaint MenuBug

Beitrag von hyrocles »

Hallo @ll,

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
eventueller Auslöser des Problems?:
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
Mein Arbeitsumgebung:
(PBVersion 5.62, 5.61 - Win 10 pro x86)

Ich hoffe ich konnte das Problem ausreichend erklären :| ist schon ziehmlich spät :coderselixir:
:lurk:
DePe
Beiträge: 153
Registriert: 26.11.2017 16:17
Wohnort: Wien
Kontaktdaten:

Re: #PB_Event_Repaint MenuBug

Beitrag von DePe »

Dein Fehlerbeispiel funktioniert bei mir ohne Fehler.
Windows 7 64-Bit, PB 5.70b1 x86
Der Zähler wird richtig hochgezählt. Nur beim Minimieren gibt es kein Repaint-Ereignis, was auch Sinn ergibt.

Peter
Antworten