'原文出处 老马的一个帖子'直接使用控件属性 Wmode="transparent" 可以让背景透明,自定义的没法, 请问那里出错了?谢谢Dim TransColor&,AppDisk$
Dim TmpFlash As Object
Private Sub Form_Load()
   AppDisk = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\")
   Set TmpFlash = Me.Controls.Add("ShockwaveFlash.ShockwaveFlash", "TmpFlash")
   TransColor = vbWhite
   TmpFlash.object.BackgroundColor = TransColor
   TmpFlash.Visible = True
   TmpFlash.object.Wmode = "transparent" '************** 背景无法透明
   TmpFlash.object.LoadMovie 0, AppDisk & "QQPET.SWF"

解决方案 »

  1.   

    放在resize自动随窗体变化大小
    TmpFlash.Width = Me.Width
    TmpFlash.Height = Me.Height在 XP 下 上面代码背景没法透明 但同样的代码在 Win7下没问题的,系统兼容性问题??
      

  2.   

    如果SWF本身是透明的话,可以考虑用API透明窗体,然后在透明窗体上播放SWF.
      

  3.   

    TmpFlash.object.BackgroundColor = TransColor这个颜色值应该没偏差吧?XP下的FLASH控件版本与WIN7下一样么?
      

  4.   


    'ME为当前窗体
    'Flash的所有默认属性不变
    Me.BackColor = RGB(66, 66, 66)
    ShockwaveFlash1.BackgroundColor = RGB(66, 66, 66)
    Me.BorderStyle = 0
    Me.Width = ShockwaveFlash1.Width
    Me.Height = ShockwaveFlash1.Height
    rtn = GetWindowLong(hWnd, GWL_EXSTYLE)
    rtn = rtn Or WS_EX_LAYERED
    SetWindowLong hWnd, GWL_EXSTYLE, rtn
    SetLayeredWindowAttributes hWnd, RGB(66, 66, 66), 0, LWA_COLORKEY
    '绝对定位当前f的位置
    Me.Move Screen.Width - Me.Width - 50, Screen.Height - Me.Height - 500
    SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS