기본카테고리

[c++]윈도우 투명도 조정하기

DevAdd 2023. 4. 25. 15:35




 

LONG lExStyle = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);

 

// 투명화 조정하려면 윈도우의 스타일이 WS_EX_LAYERED 여야 함

lExStyle = lExStyle | WS_EX_LAYERED;

 

// 윈도우 스타일 설정하기

::SetWindowLong(m_hWnd, GWL_EXSTYLE, lExStyle);

 

// 투명하게 하기

// SetLayeredWindowAttributes(윈도우핸들, 색상키, 투명도, 플래그)

::SetLayeredWindowAttributes(m_hWnd, 0, 0, LWA_ALPHA);

색상키 : 레이어 창을 구성할 때 사용할 투명 색상 키를 지정하는 COLORREF 구조입니다. 이 색상으로 창에 그려진 모든 픽셀은 투명합니다. COLORREF를 생성하려면 RGB 매크로를 사용합니다.

 

투명도 : 계층화된 창의 불투명도를 설명하는 데 사용되는 알파 값입니다. BLAND FUNCTION 구조의 SourceConstantAlpha 멤버와 유사합니다. bAlpha가 0이면 창이 완전히 투명해집니다. bAlpha가 255이면 창이 불투명합니다.

 

플래그 : 수행할 작업으로 다음과 같이 두가지가 있다.

LWA_ALPHA (0x00000002) : 계층화된 창의 불투명도를 확인합니다.

LWA_COLORKEY (0x00000001) : 투명 색상으로 색상키를 사용합니다.

 

반환값 : 함수가 성공하면 반환 값은 0이 아닙니다. 함수가 실패하면 반환 값은 0이 됩니다.

              확장 오류 정보를 가져오려면  GetLastError를 호출합니다.

 

※ 참조

계층화된 창에 대해 SetLayeredWindowAttributes가 호출되면 계층화 스타일 비트를 지우고 다시 설정할 때까지 후속 UpdateLayeredWindow 호출이 실패합니다.