Problem beim Resizen...

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Problem beim Resizen...

Beitrag von Blackskyliner »

Hallo warum bekommt der nicht mit das ich das Fenster Resize?

Code: Alles auswählen

      If OpenWindow(#Window_Movie, 0,0, MovieWidth(), MovieHeight()+25 ,#PB_Window_SystemMenu|#PB_Window_SizeGadget, "Movie - Fenster")
        
        If CreateGadgetList(WindowID(#Window_Movie))
          ImageGadget(#Movie_RenderFrame, 0,0,WindowWidth(),WindowHeight()-25,0,#PB_Image_Border)
          PlayMovie(#AUDIO_ID,GadgetID(#Movie_RenderFrame)) 
        Else
          MessageRequester("Fehler!", "Das Fenster konnte leider nicht geladen werden...")
        EndIf
        
        Repeat
          If WindowEvent() = #PB_Event_SizeWindow 
              Debug 1
              ResizeGadget(#Movie_RenderFrame, -1, -1, WindowWidth(), WindowHeight() - 25) 
              ; For i=#Movie_Start To #Movie_Position
                ; If IsGadget(i)
                  ; ResizeGadget(i, -1, WindowHeight() - 45, -1, -1) 
                ; EndIf 
              ; Next 
            EndIf 
          Delay(1)
        Until WindowEvent() = #PB_Event_CloseWindow
      Else
        MessageRequester("Fehler!", "Das Fenster zum abspielen konnte nicht geöffnet werden.")
      EndIf 
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wie wäre es mit einem funktionierenden Beispielcode in dem der Fehler auftritt?
Abgesehen davon benutzte schon wieder WindowEvent(). Das ist höchstens für Fullscreen-Spiele geeignet.
Wenn für den Testcode irgendwelche Dateien gebraucht werden, dann nehm einen OpenFileRequester oder Dateien aus dem PureBasic Examples-Ordner, so das für einen Test nur der Pfad anzupassen ist.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Code: Alles auswählen

Procedure Movie(movie.s)
  If InitMovie()
    If LoadMovie(#AUDIO_ID, movie)
      If OpenWindow(#Window_Movie, 0,0, MovieWidth(), MovieHeight()+25 ,#PB_Window_SystemMenu|#PB_Window_SizeGadget, "Movie - Fenster")
        
        If CreateGadgetList(WindowID(#Window_Movie))
          ImageGadget(#Movie_RenderFrame, 0,0,WindowWidth(),WindowHeight()-25,0,#PB_Image_Border)
          PlayMovie(#AUDIO_ID,GadgetID(#Movie_RenderFrame)) 
        Else
          MessageRequester("Fehler!", "Das Fenster konnte leider nicht geladen werden...")
        EndIf
        
        Repeat
          If WindowEvent() = #PB_Event_SizeWindow 
              Debug 1
              ResizeGadget(#Movie_RenderFrame, -1, -1, WindowWidth(), WindowHeight() - 25) 
              ; For i=#Movie_Start To #Movie_Position
                ; If IsGadget(i)
                  ; ResizeGadget(i, -1, WindowHeight() - 45, -1, -1) 
                ; EndIf 
              ; Next 
            EndIf 
          Delay(1)
        Until WindowEvent() = #PB_Event_CloseWindow
      Else
        MessageRequester("Fehler!", "Das Fenster zum abspielen konnte nicht geöffnet werden.")
      EndIf 
    Else
      MessageRequester("Fehler!", "Film konnte nicht geladen werden.") 
    EndIf
  Else
    MessageRequester("Fehler!", "Der Film konnte nicht Initialisiert werden, überprüfen sie ob sie DirectX installiert haben.")
  EndIf
EndProcedure

Movie("C:\Downloads\funsync.de....a0001....wenn_der_doener_zweimal_schimmelt.avi")
EDIT:
Ich beutze das WindowEvent wegen Playlist liederwechsel, werd das aber nochmal überarbeiten....
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Mit dem Code geht dir jede zweite Window-Message flöten...

Überlege dir, wenn an dieser Stelle der SizeEvent kam:

Code: Alles auswählen

Until WindowEvent() = #PB_Event_CloseWindow
hast du ihn ins Nirvana geschossen.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Code: Alles auswählen

If OpenWindow([...])
  
  If CreateGadgetList(WindowID(#Window_Movie))
    [...]
  EndIf
  
  Quit = #False
  
  Repeat
    
    WaitWindowEvent = WaitWindowEvent()
    
    Select WaitWindowEvent
      
      Case #PB_Event_SizeWindow
        ; Dein Code zum resizen
        
      Case #PB_Event_CloseWindow 
        Quit = #True
        
    EndSelect
    
  Until Quit = #True
  
EndIf
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag von MLK »

hört doch endlich auf mit dieser ekligen hauptschleife. ok, so steht sie in der hilfe, aber das dient auch nur der verdeutlichung.

Code: Alles auswählen

   Repeat 
      Select WaitWindowEvent()
         Case #PB_Event_SizeWindow 
            ; Dein Code zum resizen 
            
         Case #PB_Event_CloseWindow 
            Break 
      EndSelect  
   ForEver
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> hört doch endlich auf mit dieser ekligen hauptschleife.

Wie meinen? Was ist jetzt an meinem Beispiel 'ekliger' als an Deinem?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Das ist ja mehr eine Stil-Frage und sollte man schon dem Programmierer überlassen :wink: . Der Grundsätzliche Aufbau ist ja in beiden Beispielen deutlich geworden. Die Forever-Variante setze ich persönlich selten ein, wobei ich nicht weiß warum :freak: . Das Select bevorzuge ich auch, wobei ich auch manchmal If EndIf verwende.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
andi256
Beiträge: 100
Registriert: 06.11.2004 11:23
Computerausstattung: PB 5.30 (x64) Win7
Wohnort: Österreich

Beitrag von andi256 »

@MLK

also ein "Break" im code find ich hässlicher ... ist aber wie ts-soft schreibt geschmackssache
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag von MLK »

jo, hat ts recht, ist geschmacksache. wollte damit auch nicht kiffi anmachen, deshalb schrieb ich ja "hört" nicht "hör". aber ich kanns nicht mehr sehen, und will etwas gegen die ewige weitergabe dieser uralten, noch vor break entstandenen, pb_hilfe-schleife tun.
Antworten