RT

解决方案 »

  1.   

    给你一个例子:
    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 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 LongPrivate Sub Command1_Click()
     Dim rtn As Long
      rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE)    '取的窗口原先的样式
      rtn = rtn Or WS_EX_LAYERED     '使窗体添加上新的样式WS_EX_LAYERED
      SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn    '把新的样式赋给窗体
      SetLayeredWindowAttributes Me.hwnd, 0, 100, LWA_ALPHA    '100为透明值,其范围是0-255end sub
      

  2.   

    代码都有解释呀,API是固定的
      

  3.   

    Private Sub Command1_Click()
     Dim rtn As Long
      rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE)    '取的窗口原先的样式
      rtn = rtn Or WS_EX_LAYERED     '使窗体添加上新的样式WS_EX_LAYERED
      SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn    '把新的样式赋给窗体
      SetLayeredWindowAttributes Me.hwnd, 0, 100, LWA_ALPHA    '100为透明值,其范围是0-255
    end sub这个只能在NT/XP上用,不能在9X下用。
    他写的是半透明窗体。
    SetLayeredWindowAttributes Me.hwnd, 0, 100, LWA_ALPHA    '100为透明值,其范围是0-255
    这行代码里的100改成0就可以使窗体完全透明,100改成255就是不透明。
      

  4.   

    'form1的代码,需要添加一个时间控件Timer1
    Public saveDc As Long
    Public hDestDc As Long
    Public nWidth As Long
    Public nHeight As Long
    Public hsaveBmp As Long
    Public hformBmp As Long
    Public yLeft, yTop As IntegerPrivate Sub Form_Load()
    nWidth = Form1.ScaleWidth
    nHeight = Form1.ScaleHeight
    hDestDc = GetDC(0)
    saveDc = CreateCompatibleDC(hDestDc)
    hsaveBmp = CreateCompatibleBitmap(hDestDc, ScaleX(Screen.Width, 1, 3), ScaleY(Screen.Height, 1, 3))
    SelectObject saveDc, hsaveBmp
    BitBlt saveDc, 0, 0, ScaleX(Screen.Width, 1, 3), ScaleY(Screen.Height, 1, 3), hDestDc, 0, 0, vbSrcCopy
    yLeft = Form1.Left
    yTop = Form1.Top
    Show
    End Sub
    Private Sub start()
    nWidth = Form1.ScaleWidth
    nHeight = Form1.ScaleHeight
    BitBlt Form1.hdc, 0, 0, nWidth, nHeight, saveDc, ScaleX(Form1.Left, 1, 3) + 4, ScaleY(Form1.Top, 1, 3) + 23, vbSrcCopyEnd SubPrivate Sub Form_Paint()
    start
    End SubPrivate Sub Form_Resize()
    start
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    DeleteObject hsaveBmp
    DeleteDC hDestDc
    End SubPrivate Sub Timer1_Timer()
    If Form1.Left <> yLeft Or Form1.Top <> yTop Then
    Form_PaintyLeft = Form1.Left
    yTop = Form1.Top
    End If
    End Sub'Module1模块代码
    Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
    Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
    Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDc As Long, ByVal X As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
    Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObiect As Long) As Long
    Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long请你调试,是否正确如有错误请给我发CSDN短消息。