반응형

프로그램 중에는 신기하게도~ 창이 투명하게 비치는(?)... 그런 것들이 있습니다.
( 대표적인 예로는 '네이트온' 메신저의 '미니대화' 창~ 이 있구요~ㅋ )

예전에~ 그런 투명창을 처음 접해봤을땐~ 엄청 신기하더군요.

' 어떻게 저런식으로 투명하게 만들수 있을까? '...

그 때 투명창 만들기 위해서~~ 이것저것 뒤져보고 삽질(?)하던 기억을 떠올리며~
살포시 포스팅을 해봅니다~ㅋ
.
.

우선~ 한가지 먼저 알려드리자면~ '델파이' 나  '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 를 가진 프로그램을
개발할 수 있는 토대가 되길 바라면서~ㅋㅋㅋ
투명창에 대한 글은 여기서 접습니다~ ^^;
반응형
AND