VB的环境中我没有发现有这个Form属性或者方法,Sorry!

解决方案 »

  1.   

    vb本身当然没有这个属性但可以用api实现
      

  2.   

    vb6 
    WIN2000 调试成功
    Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
    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
    Private Sub TraningForm(s As Integer)
    Dim LRtn As Long
    LRtn = GetWindowLong(hwnd, GWL_EXSTYLE)
    LRtn = LRtn Or &H80000
    SetWindowLong hwnd, (-20), LRtn
    SetLayeredWindowAttributes hwnd, 0, s, &H2
    End Sub
    Private Sub Form_Load()
    Call TraningForm(Int(80))
    End Sub
      

  3.   

    如果你使用的是NT,2000或者以上,可以使用以下API函数
    Public Declare Function SetLayeredWindowAttributes Lib "user32" ( _
            ByVal hwnd As Long, _
            ByVal crKey As Long, _
            ByVal bAlpha As Byte, _
            ByVal dwFlags As Long) _
            As Long
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
            ByVal hwnd As Long, _
            ByVal nIndex As Long) _
            As Long
    Public Const WS_EX_LAYERED = &H80000
    Public Const GWL_EXSTYLE = (-20)
    Public Const LWA_ALPHA = &H2
    Public Const LWA_COLORKEY = &H1    Dim rtn As Long    rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
        rtn = rtn Or WS_EX_LAYERED
        SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn    SetLayeredWindowAttributes Me.hwnd, 0, dwNewLong, LWA_ALPHA
      

  4.   

    忘了告诉你,dwNewLong是自定义的参数,从0 -- 255,可以调节
      

  5.   

    WIN9X下不能做到吗间接的也行呀
      

  6.   

    在Win9X不可能实现窗体的半透明
    那是受Windows对窗体的绘制方式的限制
    Windows系统实际上是把所有显示的窗体的内容放在一个位图中
    等窗体需要更新时
    就会设置窗体的绘制区域(就是把在它上面的窗体的区域屏蔽掉)
    在发送WM_PAINT、WM_NCPAINT消息让程序去绘制
    所以本窗体下屏幕是不会更新的
    而半透明的计算是需要下层图形的(透明计算公式:绘制的RGB分量 = 下层图形该点的RGB分量 + CLng((上层图形该点的RGB分量 - 下层图形该点的RGB分量) * 透明度),0<=透明度<=1,0完全透明,1不透明)至于游戏中为什么能半透明
    原理实在是太简单
    PhotoShop用过吗
    就是用多图层合并办到的你没有注意吗
    游戏中的背景层都是这个游戏的画面
    根本不是Windows桌面
    而且此窗体非彼窗体
    这根本不是Windows系统的窗体
    这是游戏中画出来的窗体这样 上层图形、下层图形 都知道了,计算一下显示的颜色,半透明效果不就出来了!