속이 훤히 들여다 보이는 윈도우 만들기 SetLayeredWindowAttributes

SetLayeredWindowAttributes는 윈도우를 투명하게 해주거나 특정 색상의 영역을 투명하게 하고 마우스 이벤트를 받지 않도록 할 수 있다.

이 함수를 이용하면 윈도우의 투명정도(Alpha Blending)을 설정할 수 있고, SetWindowRgn을 이용하여 특정 부분이 투명한 윈도우를 만드는 일도 쉽게 할 수 있다. 이 함수는 윈도우 2000 이상에서 사용할 수 있다.

이 함수의 원형은 다음과 같다.


HWND hwnd
    레이어 속성을 설정할 윈도우 핸들. 이 윈도우는 WS_EX_LAYERED 속성을 갖고 있어야 한다.

COLORREF crKey
    투명 처리를 하여 마우스 이벤트를 받지 않을 색상.

BYTE bAlpha
    윈도우의 투명 정도(Alpha Blend 값). 먼저 정의된 색상인 crKey는 이값에 영향을 받지 않음.

DWORD dwFlags
    적용 옵션
    LWA_COLORKEY 0x00000001
        주어진 Color 영역을 투명 처리하고 마우스 이벤트를 받지 않도록 한다.
    LWA_ALPHA 0x00000002
        지정된 Alpha 값으로 윈도우를 투명하게 만들어 준다.

응용 예


다음은 윈도우에 특정 색상을 입히고 그 색상을 반 투명하게 만들고 나머지 부분에 50% 반투명 하도록 한 코드이다.


예제 코드는 CodeGear 완전 무료 개발툴인 Turbo C++ (C++ Builder 2006 기반)로 작성 되었다.
간단한 테스트 같은 경우 Turbo C++을 이용하는 것이 Visual C++을 이용하는 것보다 편리하다. Visual C++은 무조건 프로젝트를 만들어야 하지만 Turbo C++ 은 그냥 코딩하고 실행하면 된다. 게다가 무료이다. 완전 무료라 했는데 엄밀히 말하면 완전 무료는 아니고 설치 후 CodeGear에서 라이센스 파일을 받으면 100년짜리 라이센스를 준다. 그러니 100년 동안만 무료란 말이다. ^^*

본론으로 들어와서 위 코드를 넣고 수행해 보면 아래와 같은 영상이 나온다. 눈으로 봐서 이해하기 힘들면 예제 프로그램을 실행해 보면 쉽게 이해할 것이다.
예제프로그램영상

예제 프로그램
Posted by NeoDreamer
:
BLOG main image
사람의 발목을 잡는건 '절망'이 아니라 '체념'이고 앞으로 나아가게 하는건 '희망'이 아니라 '의지'다. - 암스 중에서 - by NeoDreamer

공지사항

카테고리

전체보기 (793)
Life Story (1)
Thinking (2)
Nothing (5)
---------------* (0)
Dev Story (701)
Com. Story (80)
IT Story (1)
---------------+ (0)
Etc (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :
05-05 13:29