기본적으로는 리소스 뷰에서 다이얼로그의 설정을 적당히 바꾸면 항상 위 설정과 프로그램 투명도를 바꿀 수 있긴 하다. 하지만 프로그램 내에서 자유롭게 설정을 바꿀 수 있게 하려면 다음과 같은 방법을 취하면 된다.

 

 

1. topmost(항상 위)

 

 체크박스로 TOPMOST를 설정 및 해제하는 예시이다. SetWindowPos를 이용하여(앞에 '::'를 붙여야한다.) HWND_TOPMOST를 설정해주고, 해제할 때에는 HWND_NOTOPMOST를 설정해주면 간단하게 오케이! 뒤의 SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW는 창을 움직이지 않고, 사이즈를 변경하지 않으며, 창은 띄우라는 의미로 저렇게 설정하였는데 더 축약시켜서 보기좋게 쓰는 방법이 있을 거라고 본다.

 

 

2. 투명도 조절

 

 투명도 조절은 Layered window만 가능하도록 되어있다. 그러므로 윈도우의 스타일을 수정해 주어야 한다. 해당 스타일은 GWL_EXSTYLE부분에 있으므로 SetWindowLong과 GetWindowLong을 잘 조합하여 설정해 준다.

 

 Layered window로 스타일을 바꿔 주었다면 SetLayerdWindowAttributes를 통해 투명도 설정이 가능하다. 두번째 인자는 컬러 키를 이용한 투명화를 해야할 때 사용되는데, 필자는 전체 창의 투명도를 바꿔야 하므로 NULL로 지정했다. 세번째 인자는 투명도 값이며 0~255의 범위를 가진다. 네번째 인자는 전체 창 투명도를 조작할 지, 컬러키 투명도를 조작할 지 플래그를 지정한다.

 

적당히 값을 넣어주면 다음과 같은 화면을 볼 수 있다.

 

 

 

예전에 현재 프로그램의 투명도를 바꿔 VS위에 겹쳐놓고 업무시간에 딴짓할 때 쓰는 프로그램을 짰던 기억이 새록새록하다.

 

 

참고자료

MSDN, "SetWindowPos function". http://msdn.microsoft.com/ko-kr/library/ms633545.aspx

MSDN, "Layered Windows". http://msdn.microsoft.com/en-us/library/ms997507.aspx

MSDN, "SetLayeredWindowAttributes function". http://msdn.microsoft.com/en-us/library/windows/desktop/ms633540(v=vs.85).aspx

+ Recent posts