关于FLASH全屏播放!!! 前一阵子问过,不过各位老大的答案让小弟茫然,谁给个源代码,研究研究!!!不胜感谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 简单一句话,用API函数Setwindowlong完成:代码: SetWindowLong me.hwnd,-16&,&H16CF0000 SetWindowLong之后,还要使用flash控件的move方法:全屏幕播放是个看似简单,实现起来一点也不容易的功能。在所有的播放控制功能中,全屏幕播放是唯一一个不是由Flash控件提供的,因为只有窗口才有全屏的概念,控件则没有,因此它需要播放器自己实现。全屏的要求是窗口充满屏幕,并且无标题条的边框,这就需要在运行时刻动态改变窗口的风格,但我们知道VB开发的程序,没有提供在运行时刻动态更改窗口风格的方法(运行时更改窗口的BorderStyle无效,ControlBox属性不能在运行时更改),看来惟有借助Windows API了。Windows在user32.dll中提供了一组对应函数来分别获取和更改窗口的属性--GetWindowlong和SetWindowLong,它们都可以在VB的API Loader中找到:Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long;Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long。其中hwnd参数是被操作窗口的句柄;nIndex参数告诉函数要操作窗口的什么属性,在本程序中传入GWL_STYLE值,其他参数值可查阅MSDN;dwNewLong参数是新的窗口属性值。标准的窗口风格是有标题条和可缩放的边框,对应的窗口风格参数值是WS_CAPTION和WS_THICKFRAME,所以要实现全屏只要将窗口风格属性中的这两个值去掉就达到效果了,要恢复也很简单,重新加上这两个值即可。Private Sub mnuFullScreenSWF_Click()' 全屏幕播放,隐藏播放控制和进度显示Dim ReturnValue As Long, WindowStyle As LongmnuFullScreenSWF.Checked = Not mnuFullScreenSWF.CheckedIf mnuFullScreenSWF.Checked Then' 更改窗口风格为无边框和无标题条,并且充满屏幕WindowStyle = GetWindowLong(Me.hwnd, GWL_STYLE)ReturnValue = SetWindowLong(Me.hwnd, GWL_STYLE, WindowStyle - WS_CAPTION - WS_THICKFRAME)Me.WindowState = vbNormalMe.Move 0, 0, Screen.Width, Screen.Height' 因为ShockwaveFlash在所有控件的最上面' 所以无须隐藏其他控件就可充满窗口MyShockwaveFlash.Move 0, 0, Me.ScaleWidth, Me.ScaleHeightElse' 恢复窗口风格为正常式样,并且还原为默认大小WindowStyle = GetWindowLong(Me.hwnd, GWL_STYLE)ReturnValue = SetWindowLong(Me.hwnd, GWL_STYLE, WindowStyle Or WS_CAPTION Or WS_THICKFRAME)Me.Move 0, 0, 488 * Screen.TwipsPerPixelX, 446 * Screen.TwipsPerPixelYMe.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2End IfEnd Sub全文可参考:http://www.pconline.com.cn/pcedu/empolder/gj/vb/10203/38625.html 如何去除除数字,符号外的文字? 100分求,tdb控件问题 用VB代码,从SQL数据库中提出一个图片字段,并在窗体中显示出来,求高手指点! VB窗口里的控件拖动问题 我是没有办法了!一个问题搞了两天了!现在只有求救了!! 只加vb编程人员 编译问题 在深圳vb 程序员工资有几k呢,有没有比delphi高呢?delphi能有几k 呢? 如何把一个日期字段和combo1.text用sql语句添加到表里? 在VB6和VBA中如何实现鼠标指针为手形状? Crystal Report Control问题 如何得到ListView中被点击行的行号
代码:
SetWindowLong me.hwnd,-16&,&H16CF0000
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long。其中hwnd参数是被操作窗口的句柄;nIndex参数告诉函数要操作窗口的什么属性,在本程序中传入GWL_STYLE值,其他参数值可查阅MSDN;dwNewLong参数是新的窗口属性值。标准的窗口风格是有标题条和可缩放的边框,对应的窗口风格参数值是WS_CAPTION和WS_THICKFRAME,所以要实现全屏只要将窗口风格属性中的这两个值去掉就达到效果了,要恢复也很简单,重新加上这两个值即可。
Private Sub mnuFullScreenSWF_Click()
' 全屏幕播放,隐藏播放控制和进度显示
Dim ReturnValue As Long, WindowStyle As Long
mnuFullScreenSWF.Checked = Not mnuFullScreenSWF.Checked
If mnuFullScreenSWF.Checked Then
' 更改窗口风格为无边框和无标题条,并且充满屏幕
WindowStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
ReturnValue = SetWindowLong(Me.hwnd, GWL_STYLE, WindowStyle - WS_CAPTION - WS_THICKFRAME)Me.WindowState = vbNormal
Me.Move 0, 0, Screen.Width, Screen.Height' 因为ShockwaveFlash在所有控件的最上面
' 所以无须隐藏其他控件就可充满窗口
MyShockwaveFlash.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
Else
' 恢复窗口风格为正常式样,并且还原为默认大小
WindowStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
ReturnValue = SetWindowLong(Me.hwnd, GWL_STYLE, WindowStyle Or WS_CAPTION Or WS_THICKFRAME)Me.Move 0, 0, 488 * Screen.TwipsPerPixelX, 446 * Screen.TwipsPerPixelY
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
End If
End Sub全文可参考:
http://www.pconline.com.cn/pcedu/empolder/gj/vb/10203/38625.html