네이트온에 알림창과 같이 폼에 페이드효과가 필요할 때 아래 코드를 참고하자.

Alpha 와 같이 함수형태로 만들어 놓고 핸들값과 Degree값만 바이트 범위(0~255) 내에서 넘겨주면 된다.


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 SetWindowLong Lib "user32" _

                  Alias "SetWindowLongA" _

                        (ByVal hWnd As Long, _

                         ByVal nIndex As Long, _

                         ByVal dwNewLong As Long) As Long

                  

Private Declare Function GetWindowLong Lib "user32" _

                  Alias "GetWindowLongA" _

                        (ByVal hWnd As Long, _

                         ByVal nIndex As Long) As Long


Private Const GWL_EXSTYLE = (-20)


Private Const WS_EX_LAYERED = &H80000


Private Const LWA_COLORKEY = &H1

Private Const LWA_ALPHA = &H2



Private Sub Alpha(ByVal hHandle As Long, ByVal byDegree As Byte)

  SetWindowLong hHandle, GWL_EXSTYLE, GetWindowLong(hHandle, GWL_EXSTYLE) Or WS_EX_LAYERED

  SetLayeredWindowAttributes hHandle, 0&, byDegree, LWA_ALPHA

End Sub



아래는 호출하는 형태


Private Sub Form_Activate()

  Dim i         As Long

  For i = 0 To 255

    Alpha Me.hWnd, CByte(i)

    DoEvents

  Next i

End Sub




Tip.

LWA_COLORKEY를 적용하면 지정한 색상만 투명하게 만들 수 있다.

Private Sub Transparent(ByVal hHandle As Long, ByVal lColor As Long)

  SetWindowLong hHandle, GWL_EXSTYLE, GetWindowLong(hHandle, GWL_EXSTYLE) Or WS_EX_LAYERED

  SetLayeredWindowAttributes hHandle, lColor, 0&, LWA_COLORKEY

End Sub


호출하는 형태

Private Sub Form_Load()
  Me.BackColor = vbRed
  Transparent Me.hWnd, vbRed
End Sub


'VB6 > Interface' 카테고리의 다른 글

폼에 보여줄 영역 만들기(구멍난 폼)  (0) 2013.03.28
폼 타이틀바 Show/Hide  (0) 2013.03.28
바탕화면 아이콘 Show/Hide  (0) 2013.03.28
폼 위치, 크기 구하기  (0) 2013.03.27
폼 타이틀바 이동효과  (0) 2013.03.26

+ Recent posts