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

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

폼, 컨트롤의 위치이동이 필요할 때에는 아래 코드를 참고하자.

FormMove 와 같이 함수형태로 만들어 놓고 핸들값만 넘겨주면 되니 편하게 사용할 수 있다.


Private Declare Function SendMessage Lib "user32" _

                  Alias "SendMessageA" _

                        (ByVal hwnd As Long, _

                         ByVal wMsg As Long, _

                         ByVal wParam As Long, _

                         lParam As Any) As Long


Private Declare Function ReleaseCapture Lib "user32" () As Long


Private Const WM_NCLBUTTONDOWN = &HA1

Private Const HTCAPTION = 2



Private Sub FormMove(ByVal hHandle As Long)

  ReleaseCapture

  SendMessage hHandle, WM_NCLBUTTONDOWN, HTCAPTION, 0

End Sub



아래는 호출하는 형태(MouseDown 이벤트에 적용하도록 하자.)


Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

  FormMove Me.hwnd

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.27

+ Recent posts