프로그램 중에는 신기하게도~ 창이 투명하게 비치는(?)... 그런 것들이 있습니다.
( 대표적인 예로는 '네이트온' 메신저의 '미니대화' 창~ 이 있구요~ㅋ )
예전에~ 그런 투명창을 처음 접해봤을땐~ 엄청 신기하더군요.
' 어떻게 저런식으로 투명하게 만들수 있을까? '...
그 때 투명창 만들기 위해서~~ 이것저것 뒤져보고 삽질(?)하던 기억을 떠올리며~
살포시 포스팅을 해봅니다~ㅋ
.
.
우선~ 한가지 먼저 알려드리자면~ '델파이' 나 'C++ 빌더' 같은 경우는...
별다른 코딩을 하지 않아도 툴~ 자체에서 투명창 효과를 낼 수 있도록 지원을 해줍니다.
( 물론~~ 좀 오래된 버전은 안되구요~ ^^;;;; )
메인 Form 의 속성 중에 'AlphaBlend' 와 'AlphaBlendValue' 항목이 있는데~
'AlphaBlend' 를 'TRUE' 로 맞춰두고~ 'AlphaBlendValue' 값을 설정하면 됩니다.
Intro 는 여기까지~~ 이제 본격적으로(?) ^^;
투명창을 만들기 위해서는 SetLayeredWindowAttributes 함수를 사용하면 됩니다.
( 참고로 해당 함수는 Layered Window 의 투명도/색상 등을 설정할 수 있는 함수입니다. )
이 함수를 이용해서 창의 투명도를 설정하기 위해서는 창이~ Layered 속성을 갖고 있어야 되는데요...
창의 속성은 SetWindowLong 함수로 설정을 해주시면 됩니다.
int nAlphaBlend = 140; SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED); SetLayeredWindowAttributes(m_hWnd, 0, nAlphaBlend, LWA_ALPHA);
간단한 샘플코드입니다.
창을 Layered 속성을 가지도록 변경을 해준 다음 투명도를 설정하는거죠~
SetLayeredWindowAttributes 함수의 세번째 인자는 0 ~ 255 까지 가능합니다.
값이 낮으면 낮을수록~ 투명해지고, 0이 되면 완전 투명(창이 안보임)이 됩니다.
투명창 예제 프로그램
별건 아니지만~~ 이런 지식들이 모여서 나중에 좀 더 멋진 UI 를 가진 프로그램을
개발할 수 있는 토대가 되길 바라면서~ㅋㅋㅋ
투명창에 대한 글은 여기서 접습니다~ ^^;
'Programming' 카테고리의 다른 글
[C/C++] RichEdit 컨트롤과 IMF_AUTOFONT 옵션 (0) | 2010.03.19 |
---|---|
[C/C++] 인라인 어셈블리 "FS:[0]" 관련 팁~! (5) | 2008.11.03 |
[C/C++] Rotate ~ 구현 (5) | 2008.07.19 |
[VB] Visual Basic 에서 C/C++ 로 만든 DLL 불러쓰기... (4) | 2007.12.14 |
[C/C++] 공유 섹션 사용하기~~ (2) | 2007.08.18 |