abidsml
asked on
AVI Files
How can i play an AVI file in vb5, but i want the image to appear in my own location, without the MCI control to apperar. ie. My own control buttons,play,stop,pause
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
can u please sending a sample code on a form contain a picture box to view the file in it.
You can't put the picture in your *own* picture box, you still have to have the MCI control box for playback, but you can align it so it *looks* just like your picture box and it'll have no borders to mess things up.
I use ActiveMovie control and set ShowControls, ShowDisplay, ShowPositionControls, ShowSelectionControls, ShowTracker properties to False. Then when I need to "roll tape" I simply code:
Public movieover As Boolean
Public imready As Boolean
Public AtEnd As AMovieCtl.StateConstants
Public rs As AMovieCtl.ReadyStateConsta nts
.
' This fires the movie:
'
Call showmovie("EXCEL.AVI")
.
Public Sub showmovie(moviename As String)
Dim movie As String
movie = ourdir & moviename
ActiveMovie1.filename = movie
Do While Not movieover
DoEvents
Loop
Me.Refresh
Me.SetFocus
End Sub
The above plays the movie and waits for it to complete before proceeding
Support routines include:
Private Sub ActiveMovie1_StateChange(B yVal oldState As Long, ByVal newState As Long)
If newState = amvStopped Then
ActiveMovie1.Visible = False
movieover = True
End If
'
End Sub
Private Sub ActiveMovie1_ReadyStateCha nge(ReadyS tate As AMovieCtl.ReadyStateConsta nts)
'
If ReadyState = amvComplete Or ReadyState = amvInteractive Then
' It's ready to run.
ActiveMovie1.Visible = True
ActiveMovie1.Run
movieover = False
End If
'
End Sub
'
' Ensure movie is off at load time
'
Private Sub Form_Activate()
ActiveMovie1.Visible = False
ActiveMovie1.Stop
End Sub
I use ActiveMovie control and set ShowControls, ShowDisplay, ShowPositionControls, ShowSelectionControls, ShowTracker properties to False. Then when I need to "roll tape" I simply code:
Public movieover As Boolean
Public imready As Boolean
Public AtEnd As AMovieCtl.StateConstants
Public rs As AMovieCtl.ReadyStateConsta
.
' This fires the movie:
'
Call showmovie("EXCEL.AVI")
.
Public Sub showmovie(moviename As String)
Dim movie As String
movie = ourdir & moviename
ActiveMovie1.filename = movie
Do While Not movieover
DoEvents
Loop
Me.Refresh
Me.SetFocus
End Sub
The above plays the movie and waits for it to complete before proceeding
Support routines include:
Private Sub ActiveMovie1_StateChange(B
If newState = amvStopped Then
ActiveMovie1.Visible = False
movieover = True
End If
'
End Sub
Private Sub ActiveMovie1_ReadyStateCha
'
If ReadyState = amvComplete Or ReadyState = amvInteractive Then
' It's ready to run.
ActiveMovie1.Visible = True
ActiveMovie1.Run
movieover = False
End If
'
End Sub
'
' Ensure movie is off at load time
'
Private Sub Form_Activate()
ActiveMovie1.Visible = False
ActiveMovie1.Stop
End Sub
ASKER
thanks, i will try this
This will make it so that you can view files within your form using command buttons
Step-by-Step Example
--------------------
1. Start a new project in Visual Basic. Add a module (.BAS) file, and make
sure the MCI control is included in the project. Add a MCI control
(MMControl1), a Command Button (Command1), and a Picture box (Picture1)
to Form1. Set Form1's ScaleMode property to Pixels (3).
2. In the General declarations section of the .BAS file, add this code:
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Type MCI_OVLY_RECT_PARMS
dwCallback As Long
rc As RECT
End Type
Global Const MCI_OVLY_WHERE_SOURCE = &H20000
Global Const MCI_OVLY_WHERE_DESTINATION = &H40000
Global Const MCI_WHERE = &H843
'Enter the following Declare statement:
Declare Function mciSendCommand Lib "winmm.dll" _
Alias "mciSendCommandA" ( _
ByVal wDeviceID As Long, _
ByVal uMessage As Long, _
ByVal dwParam1 As Long,
dwParam2 As Any) As Long
' Enter the following Declare statement:
Declare Function mciGetErrorString Lib "winmm.dll" _
Alias "mciGetErrorStringA" ( _
ByVal dwError As Long, _
ByVal lpstrBuffer As String, _
ByVal uLength As Long) As Long
3. In the Command1_Click() method for the Command button on Form1, enter
this code:
Sub Command1_Click ()
Const MB_OK = 0
Const MB_ICONSTOP = 16
Dim Retval&, Buffer$
Dim dwParam2 As MCI_OVLY_RECT_PARMS
MMControl1.Command = "Close"
MMControl1.Filename = "WndSurf1.avi" 'Sample AVI file to
'played.
'Get the MCI control to display the video in Picture1:
MMControl1.hWndDisplay = Picture1.hWnd
MMControl1.Command = "Open"
'Initialize the structure being passed with mciSendCommand, and
'set it in case you want to use the Notify property:
dwParam2.dwCallback = MMControl1.hWnd
dwParam2.rc.Left = 0
dwParam2.rc.Top = 0
dwParam2.rc.Right = 0
dwParam2.rc.Bottom = 0
'Send the message:
'Enter the following two lines as one, single line of code:
Retval& = mciSendCommand(MMControl1. DeviceID, MCI_WHERE,
MCI_OVLY_WHERE_SOURCE, dwParam2)
If Retval& <> 0 Then ' An error occurred.
Buffer$ = Space$(100)
'Get a description of the error:
Retval& = mciGetErrorString(Retval&, Buffer$, Len(Buffer$))
MsgBox Trim$(Buffer$), MB_OK + MB_ICONSTOP, "ERROR"
Else
'Resize the picture box:
Picture1.Width = dwParam2.rc.right - dwParam2.rc.left
Picture1.Height = dwParam2.rc.bottom - dwParam2.rc.top
'Play the video:
MMControl1.Wait = True ' Wait for the next command to complete
MMControl1.Command = "play" 'Play the video clip
MMControl1.Command = "close"
End If
End Sub
4. Test the program by pressing the F5 key to run it, and clicking the
command button. The AVI file will play back in the picture box, which
will have been resized to fit the video clip exactly.
Additional reference words: 3.00 4.00 MCI AVI vb4win vb432
KBCategory: kbprg kbcode kbhowto
KBSubcategory: APrgWindow
Make the mci buttons not visible by going to the properties and scroll down until you find visible change it to false
Step-by-Step Example
--------------------
1. Start a new project in Visual Basic. Add a module (.BAS) file, and make
sure the MCI control is included in the project. Add a MCI control
(MMControl1), a Command Button (Command1), and a Picture box (Picture1)
to Form1. Set Form1's ScaleMode property to Pixels (3).
2. In the General declarations section of the .BAS file, add this code:
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Type MCI_OVLY_RECT_PARMS
dwCallback As Long
rc As RECT
End Type
Global Const MCI_OVLY_WHERE_SOURCE = &H20000
Global Const MCI_OVLY_WHERE_DESTINATION
Global Const MCI_WHERE = &H843
'Enter the following Declare statement:
Declare Function mciSendCommand Lib "winmm.dll" _
Alias "mciSendCommandA" ( _
ByVal wDeviceID As Long, _
ByVal uMessage As Long, _
ByVal dwParam1 As Long,
dwParam2 As Any) As Long
' Enter the following Declare statement:
Declare Function mciGetErrorString Lib "winmm.dll" _
Alias "mciGetErrorStringA" ( _
ByVal dwError As Long, _
ByVal lpstrBuffer As String, _
ByVal uLength As Long) As Long
3. In the Command1_Click() method for the Command button on Form1, enter
this code:
Sub Command1_Click ()
Const MB_OK = 0
Const MB_ICONSTOP = 16
Dim Retval&, Buffer$
Dim dwParam2 As MCI_OVLY_RECT_PARMS
MMControl1.Command = "Close"
MMControl1.Filename = "WndSurf1.avi" 'Sample AVI file to
'played.
'Get the MCI control to display the video in Picture1:
MMControl1.hWndDisplay = Picture1.hWnd
MMControl1.Command = "Open"
'Initialize the structure being passed with mciSendCommand, and
'set it in case you want to use the Notify property:
dwParam2.dwCallback = MMControl1.hWnd
dwParam2.rc.Left = 0
dwParam2.rc.Top = 0
dwParam2.rc.Right = 0
dwParam2.rc.Bottom = 0
'Send the message:
'Enter the following two lines as one, single line of code:
Retval& = mciSendCommand(MMControl1.
MCI_OVLY_WHERE_SOURCE, dwParam2)
If Retval& <> 0 Then ' An error occurred.
Buffer$ = Space$(100)
'Get a description of the error:
Retval& = mciGetErrorString(Retval&,
MsgBox Trim$(Buffer$), MB_OK + MB_ICONSTOP, "ERROR"
Else
'Resize the picture box:
Picture1.Width = dwParam2.rc.right - dwParam2.rc.left
Picture1.Height = dwParam2.rc.bottom - dwParam2.rc.top
'Play the video:
MMControl1.Wait = True ' Wait for the next command to complete
MMControl1.Command = "play" 'Play the video clip
MMControl1.Command = "close"
End If
End Sub
4. Test the program by pressing the F5 key to run it, and clicking the
command button. The AVI file will play back in the picture box, which
will have been resized to fit the video clip exactly.
Additional reference words: 3.00 4.00 MCI AVI vb4win vb432
KBCategory: kbprg kbcode kbhowto
KBSubcategory: APrgWindow
Make the mci buttons not visible by going to the properties and scroll down until you find visible change it to false
ASKER