1. 함수의 원형

 BOOL SetLayeredWindowAttributes(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);

2. 함수의 기능

WS_EX_LAYERED  속성을 가지고 생성된 윈도우가 다른 윈도우와 겹쳐진 상태로 존재할때, 특정 색상을 투명화하거나 윈도우 자체의 불투명도를 설정하는 함수이다.

SetWindowLong(m_hWnd, GWL_EXSTYLE,GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
를 사용하여 Window 에 WS_EX_LAYERED 를 추가 할 수 있다

 

3. 함수의 매개변수에 대한 설명

    3.1 Hwnd
      특정 색상을 투명화하거나 불투명도를 설정할 대상 윈도우의 핸들이다.

   
   3.2 crKey
      대상 윈도우에서 투명화할 색상의 COLORREF 값을 명시한다. 이 값은 dwFlags 값에 LWA_COLORKEY값이 명시되어야만 유효하다.

    3.3 bAlpha
      대상 윈도우의 불투명도를 설정한다. 설정범위는 0에서 255까지이며 0은 완전히 투명한 상태이고 255는 완전히 불투명한 상태이다. 이 값은 dwFlags 값에 LWA_ALPHA 값이 명시되어야지 유효하다.
 
    현재 윈도우의 핸들이 m_hWnd 값이고 해당 윈도우를 50%정도 불투명하게 하려면 아래와
    같이 사용하면 된다.
    SetLayeredWindowAttributes(m_hWnd, 0, 127, LWA_ALPHA);
 
 
    3.4 dwFlags
     LWA_COLORKEY를 명시하면 crKey 값에 명시된 색상으로 투명화를 설정하고, LWA_ALPHA를 명시하면 bAlpha 값에 명시된 값으로 불투명도를 설정한다. 두 값은 OR(|)연산자로 조합해서 동시에 사용가능하다.
 
   현재 윈도우의 핸들이 m_hWnd 값이고 해당 윈도우에 존재하는 파란색을 투명화 하면서 나머지
   색상들은 50%정도로 불투명하게 하려면 아래와 같이 사용하면 된다.
  SetLayeredWindowAttributes(m_hWnd, RGB(0, 0, 255), 127, LWA_COLORKEY | LWA_ALPHA);
 
     [주의] 투명해진 영역에서는 마우스 메시지를 받지 못한다.


4. 함수의 반환값
  이 함수가 성공적으로 완료되었다면 0이 아닌값을 반환하고 실패했다면 0을 반환한다. 실패한 경우,
    좀더 자세한 정보를 얻고자 한다면 GetLastError 함수를 이용하면 된다.
 
 
5. 함수 사용시 주의사항
  SetLayeredWindowAttributes 함수를 호출한 후에, UpdateLayeredWindow 함수를 호출하면
    WS_EX_LAYERED 속성이 해제되었다가 다시 설정될때까지는 실패할 것이다.
 
6. 함수의 요구사항
    Window NT/2000/XP: Included in Windows 2000 and later.
    Windows 95/98/Me: Unsupported.
    Header: Declared in Winuser.h: Include Windows.h.
    Library: Use User32.lib.
Category :
Win32
Views :
22108
Registered Date :
2008.09.19
14:32:42 (*.149.217.155)
Trackback :
http://www.lunapiece.net/352/75a/trackback
Article URL :
http://www.lunapiece.net/352
Maximum Attachments : 0Byte/ 10.00MB
Maximum File Size : 10.00MB (Allowed extentsions : *.*)
Option :
:
:
:
:
List of Articles
No. Subject Author Date Views
31 Visual C++ Visual C++ 2008 Class Diagram file Lyn Apr 20, 2009 16868
30 Visual C++ 프로젝트 옵션에 따른 string wstring 자동변환 Lyn Mar 19, 2009 17031
29 Delphi / BCB C++ Builder 단독 실행파일 만들기 Lyn Mar 16, 2009 15965
28 Win32 메세지 처리시 WPARAM, LPARAM 타잎 차이 Lyn Feb 05, 2009 14654
27 Win32 DLL의 전역변수 충돌 피하는 꽁수 Lyn Jan 23, 2009 14727
26 Visual C++ 사용자 정의 메세지 핸들러 만들기 Lyn Jan 23, 2009 16720
25 Win32 Global HotKey(전역 단축키) 사용하기 Lyn Oct 24, 2008 21494
24 Win32 내 프로그램에 다른 프로그램 내장하기. [1] Lyn Oct 08, 2008 17898
23 Visual C++ VC++에서 STL 의 성능이 만족스럽지 않은경우 Lyn Sep 27, 2008 20087
22 Visual C++ VC++(Native) 에서 C#(.net) 의 DLL 호출하기 Lyn Sep 27, 2008 21775
21 Visual C++ Templete을 이용하여 BC++ OnClick 이벤트 VC++에서 흉내내보기 Lyn Sep 27, 2008 32523
20 Delphi / BCB SpeedButton 투명하게하기 Lyn Sep 19, 2008 18076
19 Win32 시스템 종료 함수 Lyn Sep 19, 2008 119121
18 Delphi / BCB 폼을 그림 모양대로 잘라내기 Lyn Sep 19, 2008 18344
» Win32 Window 투명화 (Layerd Window) Lyn Sep 19, 2008 22108
16 Win32 파일이 존재하는지 확인하는 함수 Lyn Sep 19, 2008 21538
15 Visual C++ Window 최대, 최소 크기 정하기 Lyn Sep 17, 2008 19984
14 Win32 프로그램이 죽었는지 살았는지 확인만 하고 싶은경우 Lyn Sep 17, 2008 16973
13 Visual C++ 컨트롤 원하는대로 수정한 클래스 만들기 (기초) Lyn Sep 06, 2008 20087
12 Win32 데스크탑 영역 구하기 Lyn Aug 21, 2008 15854

SITE LOGIN :)