看到有的vc的软件可以这样做,窗体是半透明的,控件和文字是不透明的,清晰可见!不知vb可以做到吗?望大侠们指点一下!

解决方案 »

  1.   

    用SetLayeredWindowAttributes函数:Option Explicit
    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 Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
    Private Const WS_EX_LAYERED = &H80000
    Private Const GWL_EXSTYLE = (-20)
    Private Const LWA_ALPHA = &H2
    Private Const LWA_COLORKEY = &H1
    Private Const WS_DLGFRAME = &H400000Private Sub Command1_Click()
            Dim rtn As Long
            Dim transCol As Long, myHwnd As Long
            transCol = vbWhite
            rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
            rtn = rtn Or WS_EX_LAYERED
            myHwnd = Me.hwnd
            SetWindowLong myHwnd, GWL_EXSTYLE, rtn
            SetLayeredWindowAttributes myHwnd, transCol, 200, LWA_ALPHA
    End SubPrivate Sub Form_Load()
        Me.BackColor = vbWhite
    End Sub
      

  2.   

    那不是"一个窗体".是组合窗体.去下载一个VISTA窗体的例子看看就知道了,半透明部分是另一个窗体,与控件窗体随动的.