Problem mit erstelltem Videoprogramm

Anfängerfragen zum Programmieren mit PureBasic.
Yoshi
Beiträge: 95
Registriert: 09.01.2007 16:42

Problem mit erstelltem Videoprogramm

Beitrag von Yoshi »

Hallo!

Ich wollte zum Anfanbg erst mal ausprobieren ein Videoprogramm zu erstellen. Wenn man auf "Datei" und dann auf "Laden" klickt soll man eigentlich das gewünschte Video auswählen können. Aber das geht dann nur mit dem roten Fenster mit dem Kreuz. Hier sind meine Quellcodes:

GeneratedIncludeFile:

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- MenuBar Constants
;
Enumeration
  #MenuBar_0
EndEnumeration

Enumeration
  #MENU_4
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Image_0
  #Editor_4
EndEnumeration

Global Dim Language$(1)

;- Image Plugins
UseJPEGImageDecoder()

;- Image Globals
Global Image0

;- Catch Images
Image0 = CatchImage(0, ?Image0)

;- Images
DataSection
Image0:
  IncludeBinary "C:\Dokumente und Einstellungen\dü\Desktop\Videoplayer\super-mario-64-ds-yoshi.jpg"
EndDataSection

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateMenu(#MenuBar_0, WindowID(#Window_0))
      MenuTitle(Language$(0))
      MenuItem(#MENU_4, Language$(1))
      EndIf

      If CreateGadgetList(WindowID(#Window_0))
        ImageGadget(#Image_0, 0, 190, 930, 1104, Image0, #PB_Image_Border)
        EditorGadget(#Editor_4, 0, 0, 600, 190)
        
      EndIf
    EndIf
EndProcedure

Procedure ReadCatalog(Filename$)
  
  If ReadFile(0, Filename$)
    If ReadString(0) = "Catalog"
      For k=0 To 1
        Language$(k) = ReadString(0)
      Next
    EndIf
    CloseFile(0)
  EndIf
  
EndProcedure

Restore BaseLanguage
For k=0 To 1
  Read Language$(k)
Next

DataSection
BaseLanguage:
  Data$ "Datei"
  Data$ "Laden"
EndDataSection

GeneratedMainFile:

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)

IncludeFile "GeneratedIncludeFile.pb"

Open_Window_0()

Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadget() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  If Event = #PB_Event_Menu
    
    MenuID = EventMenu()
    
    If MenuID = #MENU_4
      Debug "GadgetID: #MENU_4"
      
    EndIf
    
  EndIf
  
  If Event = #PB_Event_Gadget
    
    If GadgetID = #Image_0
      
    ElseIf GadgetID = #Editor_4
      
    EndIf
    
  EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loo

If InitMovie() = 0
  MessageRequester("Error", "Can't initialize movie playback !", 0) 
  End
EndIf
 Laden$= OpenFileRequester("Bitte wählen sie das zu Ladende Video!", "", "Videodateien |*.mpg;*.mpeg |Alle Dateien|*.*", 0) 
If Laden$
   If LoadMovie(0, Laden$) 
EndIf
;
EndIf
End
Benutzeravatar
coder
Beiträge: 204
Registriert: 25.09.2005 17:53
Computerausstattung: Intel Core2Quad Q8200 @ 2.33GHz
ASUS P5Q3, 2GB DDR3-1066 RAM, ATi Raedeon HD 4850
Wohnort: Deutschland
Kontaktdaten:

Beitrag von coder »

Das ist so weil du das Movie erst lädtst wenn das Fenstergeschlossen wird.
das InitMovie muss nach ganz oben und laden und abspielen in die EventSchleife und zwar dorthin:

Code: Alles auswählen

If Event = #PB_Event_Menu 
    
    MenuID = EventMenu() 
    
    If MenuID = #MENU_4 
      Debug "GadgetID: #MENU_4"
      ;dein lade-Code genau hier hin
    EndIf 
    
  EndIf 
Dann sollte es funktionieren
Da wo du jetzt deinen lade-code hast muss hin
Yoshi
Beiträge: 95
Registriert: 09.01.2007 16:42

Beitrag von Yoshi »

coder hat geschrieben:Das ist so weil du das Movie erst lädtst wenn das Fenstergeschlossen wird.
das InitMovie muss nach ganz oben und laden und abspielen in die EventSchleife und zwar dorthin:

Code: Alles auswählen

If Event = #PB_Event_Menu 
    
    MenuID = EventMenu() 
    
    If MenuID = #MENU_4 
      Debug "GadgetID: #MENU_4"
      ;dein lade-Code genau hier hin
    EndIf 
    
  EndIf 

Dann sollte es funktionieren
Da wo du jetzt deinen lade-code hast muss hin


Also irgendwie funzt das immer noch nicht so ganz!
Bei mir sieht das jetzt so aus:

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code) 

IncludeFile "GeneratedIncludeFile.pb" 

Open_Window_0() 

Repeat ; Start of the event loop 
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows 
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures 
  
  GadgetID = EventGadget() ; Is it a gadget event? 
  
  EventType = EventType() ; The event type 
  
  ;You can place code here, and use the result as parameters for the procedures 
  
  If Event = #PB_Event_Menu 
    
    MenuID = EventMenu() 
    
    If MenuID = #MENU_4 
      Debug "GadgetID: #MENU_4" 
      
    EndIf 
    
  EndIf 
  
  If Event = #PB_Event_Gadget 
    
    If GadgetID = #Image_0 
      
    ElseIf GadgetID = #Editor_4 

If InitMovie() = 0 
  MessageRequester("Error", "Can't initialize movie playback !", 0) 
  End 
EndIf 
 Laden$= OpenFileRequester("Bitte wählen sie das zu Ladende Video!", "", "Videodateien |*.mpg;*.mpeg |Alle Dateien|*.*", 0) 
If Laden$ 
   If LoadMovie(0, Laden$) 
EndIf 
; 
EndIf 
End
      
    EndIf 
    
  EndIf 
  
Until Event = #PB_Event_CloseWindow ; End of the event loo 

Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Bin wieder da.

Beitrag von roherter »

Das liegt wahrscheinlich darin das noch einiges fehlt z.b. der Befehl zum Abspielen des Movies und das der ganze code fehler hat.
Du solltest das nochmal überarbeiten.
Zuletzt geändert von roherter am 18.02.2007 13:57, insgesamt 1-mal geändert.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
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 »

Code: Alles auswählen

If InitMovie() = 0
	MessageRequester("Error", "Can't initialize movie playback !", 0)
	End
EndIf

IncludeFile "GeneratedIncludeFile.pb"

Open_Window_0()

Repeat ; Start of the event loop

	Event = WaitWindowEvent() ; This line waits until an event is received from Windows

	WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures

	GadgetID = EventGadget() ; Is it a gadget event?

	EventType = EventType() ; The event type

	;You can place code here, and use the result as parameters for the procedures

	If Event = #PB_Event_Menu

		MenuID = EventMenu()

		If MenuID = #MENU_4
			Laden$= OpenFileRequester("Bitte wählen sie das zu Ladende Video!", "", "Videodateien |*.mpg;*.mpeg |Alle Dateien|*.*", 0)
			If Laden$
				If LoadMovie(0, Laden$)
					ResizeMovie(0, GadgetX(#Image_0), GadgetY(#Image_0), GadgetWidth(#Image_0), GadgetHeight(#Image_0))
					PlayMovie(0, WindowID(#Window_0))
				EndIf
				;
			EndIf

		EndIf

	EndIf

	If Event = #PB_Event_Gadget

		If GadgetID = #Image_0

		ElseIf GadgetID = #Editor_4

		EndIf

	EndIf

Until Event = #PB_Event_CloseWindow ; End of the event loo
Antworten