Pure Code stopt wenn Fester verschoben wird. (Erledigt)

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Pure Code stopt wenn Fester verschoben wird. (Erledigt)

Beitrag von tft »

Hallo,

ich habe folgendes Problem. Und ich bilde mir ein das das bei vorherigen PB Versionen, oder < W10 nicht so war.
Folgender Code unterbricht die Arbeit wenn ich das Fenster verschiebe oder es auch nur im oberen Bereich festhalte.

Code: Alles auswählen


hWnd1 = OpenWindow(0, 0, 0, 400, 500, "ComPortApp", #PB_Window_SystemMenu| #PB_Window_ScreenCentered) : If hWnd1=0:     Debug "Cant open window":     End: EndIf

Repeat 
  
  Event = WindowEvent() 
   Select Event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case Eingabezeile
      EndSelect
     Case #PB_Event_CloseWindow 
      Quit = 1     
  EndSelect
  
  If CodeRun < ElapsedMilliseconds()
    CodeRun = ElapsedMilliseconds()+1000
    Debug("Code running")
  EndIf
  
Until Quit = 1

End



Ich habe W 10 auf meinem Rechner.

Gruss TFT
Zuletzt geändert von tft am 21.04.2017 11:27, insgesamt 1-mal geändert.
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Pure Code stopt wenn Fester verschoben wird.

Beitrag von RSBasic »

Das einzige, was ich sehe ist, dass du WindowEvent() verwendest.
Versuche es stattdessen mit WaitWindowEvent(1000).
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Pure Code stopt wenn Fester verschoben wird.

Beitrag von tft »

Hallo,

WindowEvent wartet nicht auf ein Event. Sondern Meldet nur wenn eins anliegt. Und genau so brauche ich das auch. Da Nachfolgend weiterer Code
abgearbeitet werden muss. Wenn man Daten von der Seriellen Com Schnitstelle holen muss. Bekommt man sonst einen überlauf oder sogar einen Absturtz.
Kann es sein das sich die grundlegende vorgehensweise bei der Windows Programierung geändert hat. Ich rede hier von einem Zeitraum >10 Jahre.
Wegen des eingeführten Event Systems kann ich mir auch vorstellen das alle Windows relevanten sachen gänzlich vom Arbeits Code getrennt werden müssen.
Zum beispiel als Task oder Prozess. Für die Meisten Anwendungen ist ein solcher Stop des Programs nicht relevant weil der Benutzer sowiso gerade etwas anderes macht.


Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Pure Code stopt wenn Fester verschoben wird.

Beitrag von RSBasic »

tft hat geschrieben:WindowEvent wartet nicht auf ein Event
Du kannst ja auch den Timeout-Parameter verwenden, um trotzdem jede Sekunde deine Schleife abzuarbeiten.
tft hat geschrieben:Kann es sein das sich die grundlegende vorgehensweise bei der Windows Programierung geändert hat. Ich rede hier von einem Zeitraum >10 Jahre.
Nein
tft hat geschrieben:Folgender Code unterbricht die Arbeit wenn ich das Fenster verschiebe oder es auch nur im oberen Bereich festhalte.
Das ist normal und war schon immer so, auch in Windows 7 war das Problem bereits vorhanden. Soweit ich weiß besteht dieses Problem erst seit Einführung von BindEvent(), da die Ereignisverarbeitung von PB geändert wurde.
Um das zu umgehen, benutze BindEvent und Timer:

Code: Alles auswählen

EnableExplicit

Define hWnd1
Define Event
Define Quit
Define Eingabezeile

Procedure Timer()
  Select EventTimer()
    Case 1
      Debug("Code running")
  EndSelect
  
EndProcedure

hWnd1 = OpenWindow(0, 0, 0, 400, 500, "ComPortApp", #PB_Window_SystemMenu| #PB_Window_ScreenCentered) : If hWnd1=0:     Debug "Cant open window":     End: EndIf

AddWindowTimer(0, 1, 1000)

BindEvent(#PB_Event_Timer, @Timer(), 0)

Repeat
  
  Event = WindowEvent()
  Select Event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case Eingabezeile
      EndSelect
    Case #PB_Event_CloseWindow
      Quit = 1     
  EndSelect
  
Until Quit = 1

End
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Pure Code stopt wenn Fester verschoben wird.

Beitrag von tft »

Hallo,

danke für die Hilfe. Ja so geht das prima.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Antworten