困扰了几天的问题呀,把弹出的播放窗口用movewindows移动了地方就放不了? 我用的是api 的mciSendString 来播放的avi文件的,play后,弹出来一个窗口, 但是直接在左上角,我不喜欢,想直接弹到屏幕中间放的,用了movewindows方法,弹是弹到了 屏幕中间,但就是播放不了,那个在左上角的播放画面也没消失,到网上查了几天也没办法解决呀, 后来又换用了SetWindowPos,SendMessage,都是和上样一样的问题,关闭不了程序,直到程序死掉..我是新手才学了10几天,对你们说很菜的问题,对我们才学的人真是大大的难题呀,焦急的盼望着你的回答,,
等待中.......还请高手们赐教呀,,
等待中.......还请高手们赐教呀,,
解决方案 »
- vb中如何实现两个字段的字符匹配
- 类型转换问题..求助
- 急问:程序中怎么判断读取的文件是文本文件,还是二进制文件等
- C# 怎么才能删除excel里的一整行数据
- 如何把关掉的控件再开起来?
- 帮忙帮忙!^o^小小问题大家进来看看吧
- 关于VB中窗口控制的问题
- 帮一下忙,哪里有这个控件,谢谢~
- 使用IMGEIDT控件时让图片自适应边框,可打印时却不按照边框来。打印出来的图片只有一部分(原始图片较大,自适应后变小,而打印出来的图
- ☆☆☆☆☆☆☆ActiveReport 2.0 可不可以不预览,直接进行打印?请各位帮忙解决一下!☆☆☆☆☆☆☆
- vb中用adodc添加记录到sql数据库的问题
- vb中的shape 控件
语句是这样的:
put 你的设备名称 window at 屏幕左边 屏幕上边 窗口宽度 窗口高度
举个例子:Dim MyLeft As Long
Dim MyTop As Long
MyLeft = Screen.Width/15/2-320
MyTop = Screen.Height/15/2-240
'这个语句在你播放媒体后使用
mciExecute "put MyMCIDC window at " & MyLeft & " " & MyTop & " 640 480"
还有,MCI不是一定要弹出窗口的,可以指定到一个容器里的,比如可以指定到PictureBox里
只要改改打开媒体文件的MCI语句就可以了,语句这样写:
open 文件路径 TYPE MPEGVideo ALIAS 你的设备名称 STYLE child PARENT 父窗口句柄
举个例子:mciExecute "open C:\1.wmv TYPE MPEGVideo ALIAS MyMCIDC STYLE child PARENT " & Picture1.hWnd
记住,MCI的设备名称很重要,要移动他或控制他都是靠设备名称操作的
'在窗体Form1中放2个命令按钮Command1、Command2,1个滑杆控件Slider1,1个图片框控件Picture1,Picture1和Slider1的宽度可以不一样,1个定时器控件Timer1
'再添加一个窗体Form2Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Const WS_CHILD = &H40000000 '用于建立播放视频窗口的样式Dim S As String, fName As String, sName As StringFunction mciVideoStretch(MCIfile As String, formTV As Form) 'MCI视频图像缩放函数
On Error Resume Next
Dim strMCI As String
strMCI = "put " & MCIfile & " window at 0 0 " & formTV.ScaleWidth & " " & formTV.ScaleHeight
Call mciSendString(strMCI, vbNullString, 0, 0)
End Function
Private Sub Command1_Click()
On Error Resume Next
Form2.Visible = True
fName = "E:\下载音乐\我和你(演唱者莎拉布菜曼刘欢)_北京2008年第29届奥运会主题歌高清视频720×576.avi"
S = String(LenB(fName), Chr(0))
GetShortPathName fName, S, Len(S)
sName = Left(S, InStr(S, Chr(0)) - 1) mciSendString "stop MEDIA", vbNullString, 0, 0
mciSendString "close MEDIA", vbNullString, 0, 0
'Call mciSendString("open " & Trim(sName) & " alias MEDIA", vbNullString, 256, 0)
Call mciSendString("open " & Trim(sName) & " alias MEDIA parent " & Form2.hWnd & " style " & WS_CHILD & " WAIT", vbNullString, 256, 0)
S = String(256, Chr(0))
mciSendString "status MEDIA length", S, Len(S), 0
Slider1.Max = Val(S) * 1000 / 25
Slider1.Min = 0
Slider1.TickFrequency = Int(Val(S) * 1000 / 75)
Timer1.Enabled = True
Picture1.BackColor = RGB(74, 74, 82)
mciSendString "play MEDIA", vbNullString, 0, 0
'Call mciVideoStretch("MEDIA", Form2) '调用视频缩放函数
End SubPrivate Sub Command2_Click()
On Error Resume Next
Timer1.Enabled = False
mciSendString "pause MEDIA", vbNullString, 0, 0
mciSendString "stop MEDIA", vbNullString, 0, 0
mciSendString "close MEDIA", vbNullString, 0, 0
End SubPrivate Sub Form_Load()
Form1.BackColor = &H0&
Command1.Caption = "播放音乐"
Command2.Caption = "停止播放"
Picture1.BackColor = &HC0C000
Picture1.FillColor = &H0&
Picture1.ForeColor = &H80000008
Picture1.Height = 65 '图片框的高度
Timer1.Interval = 100
Timer1.Enabled = False
Form2.Visible = False
Form2.Left = (Screen.Width - Form2.Width) / 2
Form2.Top = (Screen.Height - Form2.Height) / 2
Form2.ScaleMode = 3 '这句非常非常重要,你把这句去掉,看有什么效果End SubPrivate Sub Form_Unload(Cancel As Integer)
Unload Form2
End SubPrivate Sub Timer1_Timer()
'Dim S As String '记录当前时间
Dim cjlS1 As Long, cjlS2 As Long
Dim cjlDB As Double
On Error Resume Next
Call mciVideoStretch("MEDIA", Form2) '调用视频缩放函数
S = String(256, Chr(0))
mciSendString "status MEDIA position", S, Len(S), 0
Slider1.Value = Val(S) * 1000 / 25 '当前播放时间进度,单位是毫秒
'除以1000全都化成秒
cjlS1 = (Slider1.Value / 1000) * Int(Picture1.Width / (Slider1.Max / 1000)) '基本值
cjlDB = (Picture1.Width / (Slider1.Max / 1000)) - Int(Picture1.Width / (Slider1.Max / 1000))
cjlS2 = Int((Slider1.Value / 1000) * (cjlDB)) '误差
Picture1.Line (0, 0)-(cjlS1 + cjlS2, Picture1.Height), RGB(157, 217, 253), BF '播放时间进度显示器
End Sub
http://download.csdn.net/source/634750