前一阵子问过,不过各位老大的答案让小弟茫然,谁给个源代码,研究研究!!!不胜感谢!!!

解决方案 »

  1.   

    简单一句话,用API函数Setwindowlong完成:
    代码:
      SetWindowLong me.hwnd,-16&,&H16CF0000
      

  2.   

    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 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