폼의 배경을 투명하게 만드는 코드입니다. 투명하게 만드는 코드라고는 하지만
실제적으론 투명하게 되는 것이 아니고 폼에 의해 가려진 윈도우의 배경을 폼의
배경화면으로 살짝 옮기는 것입니다. 테스트 하실때 일단 폼을 투명하게 하고
폼상단의 바를 클릭하여 드래그를 해보면 알수 있을 것입니다.
1. 모듈에 다음과 같은 API Function을 선언합니다
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_NOTRANSPARENT = &H0&
Public Const WS_EX_TRANSPARENT = &H20&
Public Const SWP_FRAMECHANGED = &H20
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const SWP_SHOWME = SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE
Public Const HWND_NOTOPMOST = -2
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
2. 폼을 하나 추가시킨후 폼에 두개의 CommandButton 을 올려놓습니다.
그리고 각각의 CommandButton 에 다음과 같이 코딩하십시요.
' 폼을 투명하게 만든다
Private Sub Command1_Click()
SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT
SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0&, 0&, 0&, 0&, SWP_SHOWME
End Sub
' 폼을 원래대로 되돌린다
Private Sub Command1_Click()
SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_EX_NOTRANSPARENT
SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0&, 0&, 0&, 0&, SWP_SHOWME
Me.Refresh
End Sub
3. 실행을 한후 CommandButton1 을 클릭하게 되면 폼이 투명하게 변하고
CommandButton2 를 클릭하게 원래대로 되돌아 옵니다.
폼을 투명하게 한후 폼상단의 바를 클릭하여 드래그 해보세요.
그러면 위에서 이야기한 내용을 알게 될것입니다.
'프로그램언어 > VB' 카테고리의 다른 글
실행 파일에 디지털 서명 넣기 (Ver 0.1) (0) | 2008.03.24 |
---|---|
인증서종류/OS별 ActiveX 보안 경고(설치 여부 확인) 메세지 비교 (0) | 2008.03.24 |
VB용 Excel Report 일부모음 (0) | 2008.03.24 |
ActiveX OCX배포시 디자인타임 라이센스 활용하기 (0) | 2008.03.24 |
[펌]Win 32 Message 관련 (0) | 2008.03.24 |