Seite 1 von 1

Problem mit erstelltem Videoprogramm

Verfasst: 17.02.2007 18:30
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

Verfasst: 17.02.2007 19:44
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

Verfasst: 18.02.2007 13:17
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 


Bin wieder da.

Verfasst: 18.02.2007 13:55
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.

Verfasst: 18.02.2007 13:57
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